编译动态链接库

5

我目前正在尝试在Windows和MinGW上编译一个动态链接库(用于插件系统)。

我使用以下命令行编译每个对象:

mingw-g++ -fPIC test.cpp

以下是使用这行代码的库:

mingw-g++ -rdynamic -shared -Wl,-soname,test.so.1 -o test.so test.o

在MinGW下,它根本不起作用(在Linux下使用类似的行代码可以正常工作):由于某种原因,fPIC和rdynamic被忽略了。当尝试制作库时,编译器会尝试将其与应该在我将其与主二进制文件动态链接时解决的对象链接起来。

那么,在MinGW下如何编译它呢?

谢谢 :) !

1个回答

8

-fPIC-rdynamic会被忽略,因为它们在Windows上没有用处。

此外,在Windows上,.so不是库的正确输出扩展名。

使用GCC制作/在Windows上制作共享库:

mingw-g++ -c file.cpp -o file.o
mingw-g++ -shared -Wl,--out-implib,libfile.a -o file.dll file.o 

不多不少。

而且,文档总是很有用的:http://www.mingw.org/wiki/sampleDLL


1
所以基本上当设置了编译器标志但编译器不知道时,它会被忽略?我认为编译器应该抛出一个错误或至少是一个警告。 - Bionix1441
2
@Bionix 取决于选项和编译器。有时忽略此类选项会减少头痛,就像在这种情况下一样。 - rubenvb

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