在MinGW中使用libdl.so

5

我希望在MinGW中生成一个dll文件,为此我有几个对象依赖项,其中一个对象依赖项是libdl.so,在unix中我只需添加以下内容:

g++ xx.o yy.o /usr/lib/libdl.so -o module.so

但在MinGW中,我不知道如何添加这个对象。有什么想法吗?

2个回答

5

有一个MinGW端口的libdl库可供使用,就像在Unix下一样。引用自该网站:

该库实现了对dlfcn的包装,如POSIX和SUS中所指定,在Windows API中发现动态链接库函数。

它需要使用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


-1

我遇到了同样的问题(msys2,32位编译器版本等)。

对我来说,我发现libdl.a在/usr/lib中可用,但不在/mingw32/lib中。我通过将其链接到/mingw32/lib文件夹来解决了这个问题:

ln -s /usr/lib/libdl.a /mingw32/lib

那将是msys2层的libdl,而不是纯win32的libdl。 - Rafael Kitover

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接