我想在 MinGW 中生成一个 dll 文件,为了做到这一点,我有几个对象依赖项,我的对象依赖项之一是 libdl.so,我在 unix 中简单地添加了这个对象:
g++ xx.o yy.o /usr/lib/libdl.so -o module.so
但是在 MinGW 中,我不知道如何添加这个对象。有任何想法吗?
有一个libdl 的 MinGW 端口,您可以像在 Unix 下一样使用它。引自网站:
该库围绕 Windows API 中的动态链接库函数实现了 dlfcn 的包装器,如 POSIX 和 SUS 中所指定。
它需要 MinGW 来构建。
您可能会从下载部分获得预构建的二进制文件(使用 MinGW gcc 3.4.5)和捆绑的源代码。
以下命令在标准 MinGW 安装中构建和安装它(从您的 MinGW shell 运行):
./configure --prefix=/ --libdir=/lib --incdir=/include && make && make install
要将库编译为 DLL,请使用以下命令:
g++ -shared xx.o yy.o -ldl -o module.dll
我遇到了同样的问题(msys2、32位版本的编译器等)。
对我来说,我发现 libdl.a 在 /usr/lib 中可用,但在 /mingw32/lib 中不可用。我能够通过将其链接到 /mingw32/lib 文件夹来解决问题:
ln -s /usr/lib/libdl.a /mingw32/lib