c++ - Mingw 构建 - 依赖于不是 Windows 原生的 DLL

标签 c++ build shared-libraries mingw

我正在使用 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)依赖于KERNEL32MSVCRT

最佳答案

-static 标志可能就是您正在寻找的。 (在我看来,在同一行同时使用 -static-shared 仍然很有趣,但它们并不相反。)

如果您使用 g++ 作为驱动程序而不是 gcc,您可以使用 -static-libstdc++ 标志。

关于c++ - Mingw 构建 - 依赖于不是 Windows 原生的 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6298297/

相关文章:

c++ - 简单的程序不会编译

C++:打印或计算一个标准库容器到控制台

c++ - 我可以使用动态构建的比较器创建 map 吗?

android - 错误配置 'compile' 已过时,已替换为 'implementation' 和 api

java - 如何自动将所有相关类收集到一个jar中(使用maven)?

c++ - Visual Studio 2012 静态库与 Visual Studio 2017

c++ - C4838 警告与 const char* 数组的数组初始化

c - 隐式调用时如何使用RTLD_DEEPBIND?

Python 在/usr/lib/x86_64-linux-gnu 中找不到 ldconfig -p 确实找到的库

objective-c - xCode 8.2.1 slow build objective-c with swift pod