我正在使用 MinGW (GCC 4.5.0) 编译我的库以导出为共享库。为此,我使用类似于以下的 MAKE 命令编译所有源文件:
gcc -shared -c mysource.cpp -o mysource.o
然后最后:
gcc -shared -lstdc++ -lm -lws2_32 mysource.o -o mylib.dll
当我对输出文件执行依赖项遍历时(例如使用 http://www.dependencywalker.com/),我看到有 3 个依赖项:
KERNEL32.dll
MSVCRT.dll
LIBSTDC++-6.DLL
让我的 DLL 依赖于 Windows 不附带的文件对于我的最终目标来说不是最佳选择。
有没有一种方法可以设置我的系统,使最终输出(DLL)仅依赖于KERNEL32和MSVCRT?
最佳答案
-static
标志可能就是您正在寻找的。 (在我看来,在同一行同时使用 -static
和 -shared
仍然很有趣,但它们并不相反。)
如果您使用 g++
作为驱动程序而不是 gcc
,您可以使用 -static-libstdc++
标志。
关于c++ - Mingw 构建 - 依赖于不是 Windows 原生的 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6298297/