我正在学习使用MinGW g编译器在Windows上使用C的插件系统。编译器版本是:
C:\SAVVY\src>g++--版本g++(MinGW.org GCC Build-2)9.2.0
我从这里下载了源代码https://cplusplus.com/articles/48TbqMoL/
然后我试图找出错误:捕获的异常:插件DLL无效:必须同时定义“getObj”和“getName”。
错误行可能在main.cpp 59,60中
ObjProc objFunc = (ObjProc) GetProcAddress(mod, "_Z6getObjv");
NameProc nameFunc = (NameProc) GetProcAddress(mod, "_Z7getNamev");
我曾经研究过“名字乱”这个词,但我找不到解决办法。有人能告诉我怎么解决吗?
1条答案
按热度按时间2nbm6dog1#
那篇文章可能已经过时了,它已经有9年多的历史了。名称mangling是不稳定的,可能会改变从一个到另一个编译器版本。此外,9年前有一位读者报告了这样的问题,并在那篇文章中注意到:loading dll issue。最后,这篇文章已经更新了解决方案。转到章节更新-跨不同编译器使用插件系统,并查看使用
extern "C"
的解决方案。