C语言 没有编译依赖项的DLL

hkmswyz6  于 2023-08-03  发布在  其他
关注(0)|答案(1)|浏览(115)

我正在尝试用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

字符串

9wbgstp7

9wbgstp71#

因为编译器需要函数在链接时出现,因为必须查找地址,所以你想做的是不可能的。
我的建议是将json和base实际移动到不同的模块,然后可执行文件和其他DLL可以依赖这些模块。

相关问题