Windows 编译动态链接库

Windows 编译动态链接库,windows,mingw,Windows,Mingw,我目前正在尝试使用Windows和MinGW编译一个动态链接库(用于插件系统) 我使用以下命令行编译每个对象: mingw-g++ -fPIC test.cpp 以及使用此行的库: mingw-g++-rdynamic-shared-Wl,-soname,test.so.1-o test.so test.o 它根本不起作用(在Linux中使用GCC,不过类似的代码行也能起作用):由于某种原因,fPIC和RDDynamic被忽略了。 在尝试创建库时,它失败了,因为编译器尝试将它与应该解析的对象链

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

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

mingw-g++ -fPIC test.cpp
以及使用此行的库:

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

它根本不起作用(在Linux中使用GCC,不过类似的代码行也能起作用):由于某种原因,fPIC和RDDynamic被忽略了。 在尝试创建库时,它失败了,因为编译器尝试将它与应该解析的对象链接,因为我将它与主二进制文件动态链接

那么,如何使用MinGW编译这个呢


谢谢:)

-fPIC
-rdynamic
被忽略,因为它们不用于Windows

另外,
。因此
不是Windows上库的正确输出扩展名

要使用GCC为/在windows上创建共享库,请执行以下操作:

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


而且,文档总是很可爱的:

所以基本上,当设置了编译器标志,而编译器不知道它时,它会被忽略吗?我认为编译器应该抛出一个错误,或者至少抛出一个错误warning@Bionix取决于选项和编译器。有时,忽略这样一个选项会减少麻烦,例如在本例中。