首页 > 解决方案 > 我有一个使用 g++ 使用各种优化标志编译的 .dll,如何将它动态链接到我的应用程序?

问题描述

我在Windows上有一个.dll 库,我在命令行上使用mingw g++编译它并使用各种标志来优化它,但我需要将它链接到我的项目,以便运行编译的.exe需要.dll(到目前为止据我了解,这是隐式/动态链接)。这最初是一个macOS项目,所以我不知道如何将它链接到我的Visual Studio项目,因为我似乎需要一个 .lib 文件。

我创建.dll文件的方法是在 lib 文件夹内的 cmd 中输入此命令:

g++ -shared -DNDEBUG -IC:\Users\luis.lopez\Documents\libraries\eigen\ -march=native -ftree-vectorize -ffast-math -fstrict-aliasing -O3 -fomit-frame-pointer -fopenmp -o libfoo.dll foolibrary.cpp

有没有办法让我在维护这些编译标志的同时创建.lib 文件?

标签: c++dynamicdlllinkermingw

解决方案


您可以添加-Wl,--output-def,libfoo.def以生成libfoo.def. 然后你应该能够生成一个 MSVC.lib文件,请参阅:如何从 DLL 生成导入库(LIB 文件)?

但是要正确移植到 Windows,您需要确保符号实际上是由库使用导出并由使用库的代码使用__declspec(dllexport)导入__declspec(dllimport)的,例如:linking between dllimport and dllexport


推荐阅读