# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1671241826 0 # Node ID 939fbceec13f27088b97e28739308104970bd297 # Parent f0a00c7c4ec1960c80249bd71982a7ecba664f1f Win: Add support for building the C++ dwtestoo with Visual C. Need to use dwmain() macro instead of standard main() entrypoint for Windows. Had to move the _dw_convertargs() definition outside of the dwmain() macro. The macro can be called from C++ code changing the function definition. diff -r f0a00c7c4ec1 -r 939fbceec13f dw.h --- a/dw.h Fri Dec 16 13:33:29 2022 +0000 +++ b/dw.h Sat Dec 17 01:50:26 2022 +0000 @@ -1949,7 +1949,6 @@ #elif defined(__WIN32__) #define dwmain(a, b) \ _dwmain(a, b); \ -char ** API _dw_convertargs(int *count, char *start, HINSTANCE hInstance); \ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {\ int argc; \ char **argv = _dw_convertargs(&argc, lpCmdLine, hInstance); \ @@ -2248,6 +2247,10 @@ /* Exported for language bindings */ void API _dw_init_thread(void); void API _dw_deinit_thread(void); +/* Exported for WinMain handing macro on Windows */ +#ifdef __WIN32__ +char ** API _dw_convertargs(int *count, char *start, HINSTANCE hInstance); +#endif #ifdef __cplusplus } diff -r f0a00c7c4ec1 -r 939fbceec13f dwtestoo.cpp --- a/dwtestoo.cpp Fri Dec 16 13:33:29 2022 +0000 +++ b/dwtestoo.cpp Sat Dec 17 01:50:26 2022 +0000 @@ -12,7 +12,7 @@ SetSize(200, 200); } -int main(int argc, char* argv[]) +int dwmain(int argc, char* argv[]) { DW::App *app = new DW::App(argc, argv, "org.dbsoft.dwindows.dwtestoo"); MyWindow *window = new MyWindow(); diff -r f0a00c7c4ec1 -r 939fbceec13f makefile.vc --- a/makefile.vc Fri Dec 16 13:33:29 2022 +0000 +++ b/makefile.vc Sat Dec 17 01:50:26 2022 +0000 @@ -125,7 +125,7 @@ OBJS2 = dwcompat.obj dirent.obj -all: dw dwcompat dwtest +all: dw dwcompat dwtest dwtestoo clean: -erase *.dll @@ -205,7 +205,7 @@ dwcompat.obj: $(SRCDIR)\dwcompat.c $(CC) $(CFLAGS) $(CFLAGS_DEBUG) $(SRCDIR)\dwcompat.c -dwtest.obj: $(SRCDIR)\dwtest.c +dwtest.obj: $(SRCDIR)\dwtest.c $(SRCDIR)\dw.h $(CC) $(CFLAGS) $(CFLAGS_DEBUG) $(SRCDIR)\dwtest.c dwtest: dwtest.exe @@ -215,6 +215,16 @@ mt.exe /manifest dwtest.exe.manifest $(SRCDIR)\win\dwtest.exe.$(TARGET_CPU).manifest /outputresource:dwtest.exe;1 -erase dwtest.exe.manifest +dwtestoo.obj: $(SRCDIR)\dwtestoo.cpp $(SRCDIR)\dw.h + $(CC) $(CFLAGS) $(CFLAGS_DEBUG) $(SRCDIR)\dwtestoo.cpp + +dwtestoo: dwtestoo.exe + +dwtestoo.exe: dwtestoo.obj + $(LINK) $(LINKFLAGS) /out:dwtestoo.exe dwtestoo.obj /subsystem:windows $(DWLIBDIR)\dwcompat.lib $(DWLIBDIR)\dw.lib $(LIBS) + mt.exe /manifest dwtestoo.exe.manifest $(SRCDIR)\win\dwtest.exe.$(TARGET_CPU).manifest /outputresource:dwtestoo.exe;1 + -erase dwtestoo.exe.manifest + zip: dw.dll copy win\readme-win.txt . zip dwindows-win-$(VERDOT).zip readme-win.txt readme.txt x64\dw.dll x64\dwcompat.dll x64\dw.lib x64\dwcompat.lib x86\dw.dll x86\dwcompat.dll x86\dw.lib x86\dwcompat.lib dw.h dwcompat.h