【发布时间】:2020-07-28 16:53:37
【问题描述】:
我正在 VS 2017 中编写一个使用 Windows 32 位版本的 SWI Prolog 的项目。我在另一个使用 MSVC 编译的项目中使用 SWI Prolog C++ 接口,使用 C++ 头文件和 .a 静态库来配合它。
我把所有东西都很好地连接在一起,这样项目就可以在 VS 的本地调试器模式下正常运行。但是,当我尝试使用已编译的 .exe 时,出现链接器错误:
在动态链接库C:\ProgrammingLanguages\swipl-32\bin\libswipl.dll中找不到过程入口点__divmoddi4
在谷歌搜索后,我发现这个函数是新版本 GCC 独有的,考虑到它是使用 MinGW 交叉编译的,SWI Prolog 库使用它是有道理的。
问题是我需要这个可执行文件自己工作,但我不知道如何让项目在不直接切换到 GCC 的情况下解决这个链接器错误。有什么办法可以在仍然使用 MSVC 的同时解决此链接错误?
我阅读了一些关于使用extern "C" 解决问题的其他线程,但由于我正在使用的标头中存在重载函数,因此出现编译器错误。除非我需要为 SWI Prolog 使用 C 头文件?
【问题讨论】:
标签: c++ visual-studio prolog linker-errors