我正在尝试用mingw 32(x86_64-w 64-wingw 32-gcc)以尽可能小的方式编译DLL。
我有一个运行的可执行客户端,它具有DLL需要的所有依赖项,如json. c和base64. c。
与其将json. c和base64. c编译到DLL中,我宁愿找到一种方法来忽略“未定义引用”错误,并让DLL从可执行客户端的json. c和base64. c中提取函数。
”””所以,我的问题。如何使用mingw编译这个零依赖DLL?***
我试过-Wl,--unresolved-symbols=ignore-all
,但它不工作。选项有效...但是GCC错误输出是相同的。
在这里,我有一个可执行的运行与printSuccess
函数定义,我试图编译这个DLL有一个未解决的符号,将与__declspec(dllimport)
调用时,DLL做DLL_PROCESS_ATTACH
,应该(希望)启动printSuccess
一旦我LoadLibrary & GetProcAddress
。
这是输出:
dev@CLIENT2:/$ x86_64-w64-mingw32-gcc main.c -Wl,--unresolved-symbols=ignore-all -o main64.exe
main.c: In function ‘main’:
main.c:10:2: warning: implicit declaration of function ‘printSuccess’ [-Wimplicit-function-declaration]
10 | printSuccess();
| ^~~~~~~~~~~~
/usr/bin/x86_64-w64-mingw32-ld: /tmp/cctVzHaX.o:main.c:(.text+0x15): undefined reference to `printSuccess'
collect2: error: ld returned 1 exit status
字符串
1条答案
按热度按时间9wbgstp71#
因为编译器需要函数在链接时出现,因为必须查找地址,所以你想做的是不可能的。
我的建议是将json和base实际移动到不同的模块,然后可执行文件和其他DLL可以依赖这些模块。