VC DLL 中 C++ 符号的 MinGw 未定义符号

Posted

技术标签:

【中文标题】VC DLL 中 C++ 符号的 MinGw 未定义符号【英文标题】:MinGw undefined symbol for C++ symbols in VC DLL 【发布时间】:2015-11-16 12:37:51 【问题描述】:

我有一个使用 Microsoft Visual Studio 创建的 DLL。它使用

导出函数和类
__declspec(dllexport)

我能够在另一个用 VS 构建的 DLL 中成功使用这个 DLL。 但是,当我尝试使用 MinGW 编译相同的 DLL 时,我不断收到来自该 DLL 的符号的“未定义引用”错误。 我尝试像这样编译它:

g++ -c App.cpp 
g++ -shared -o Live.dll App.o -lTest 

有人可以提示我缺少什么吗?我的意思是,这应该是可能的吧?

我已经尝试了我在 MinGW 网站上找到的各种方法,但仍无法找出问题所在。

谢谢, 杰拉德

【问题讨论】:

类似:***.com/q/9253606/560648 ***.com/questions/22116343/… 等。 【参考方案1】:

我的意思是,这应该是可能的吧?

错了!

您的 DLL 是使用不同的工具链构建的,具有不同的标准库实现,谁知道还有什么。它们不兼容。

使用相同的工具链构建您项目的所有组件。

【讨论】:

那么这里解释的有关 VC 和 MinGW 库的互操作性的信息 (mingw.org/wiki/msvc_and_mingw_dlls) 仅适用于 C 而不是 C++ 库? @nutrina:没有关于支持thiscall 的内容。尽管从您的问题中不清楚您的调用约定实际上是什么。一个测试用例可能会有所帮助。

以上是关于VC DLL 中 C++ 符号的 MinGw 未定义符号的主要内容,如果未能解决你的问题,请参考以下文章

vc写的dll被mingw的g++编译引用

调用 C++ dll 的访问冲突

cmake:让mingw(gcc)生成MSVC可用的dll(.lib)----mark亲测有效

使用 mingw 遵循简单的 c++ DLL 教程时出错

MSVC和MinGW组件dll相互调用

从 MinGW .a 转换为 VC++ .lib