我试图在命令提示符下用gcc编译C,但是我得到了这个未定义的引用'wWinMain'错误。
我首先得到了对'WinMain'的未定义引用,但我通过添加参数修复了这个问题:
- 市政代码
现在'wWinMain'是未定义的。如何解决这个问题?
C:\Development\WA\Library\Backend\C\CB\CB>gcc CB.c -lssl -lcrypto -municode
C:/Strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
C:/Strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x86_64-w64-mingw32/lib/../lib/libmingw32.a(lib64_libmingw32_a-crt0_w.o):crt0_w.c:(.text+0x21): undefined reference to `wWinMain'
collect2.exe: error: ld returned 1 exit status
2条答案
按热度按时间x8diyxa71#
gcc CB.c -lssl -lcrypto
将编译并链接一个 * 应用程序 *,在Windows上默认为一个窗口化应用程序,其入口点是WinMain
(您的库显然没有也不需要)。添加
-municode
只是指示系统使用windows unicode API,然后入口点变为wWinMain
,您仍然遇到相同的问题。若要建置DLL,请加入
-shared
:gcc CB.c -shared -lssl -lcrypto
vltsax252#
你没有提供你的任何代码。而我遇到的问题与此类似,所以我将描述我的经验。
我在试用Dear ImGui库,当我添加-municode选项时,链接器也抱怨了同样的问题。我做了一些搜索,找到了an answer to a similar question和另一个讨论相关问题的评论,他们都建议将“main”改为“wmain”。我这样做了,并且构建能够成功。但是我没有足够的知识来提供关于问题来源的任何更深层次的信息。