我有一个非常模糊的问题,但我希望有人可以帮助解决它。我正在修改一个 C++ 项目,昨天它还在工作,但今天不行。我很确定我没有改变任何东西,但为了完全确定我再次从 SVN 中检查了项目,我什至恢复到以前的系统还原点(因为这是一台工作计算机,它有时会秘密安装更新等。 )。编译成功后,程序可以启动了,但是我和它交互之后出现这个错误: The procedure entry point ?methodName@className@@UAEXXZ could not be located in the dynamic link library libName.dll.
我搜索了互联网,但大多数人的问题似乎是由使用的 DLL 的旧版本引起的。我搜索了我的电脑,没有旧版本。如果我删除正确的版本,应用程序不会启动。如果我然后重新编译该项目,则会再次创建 DLL,因此我非常确定应用程序正在使用正确的 DLL,并且编译正在创建它。如果我在错误引用的方法中引入语法错误,则项目拒绝编译,所以我猜这意味着它也在编译包含该方法的文件。
基本上我对 DLL、链接等一无所知,所以如果有人知道为什么项目中非常明确定义的函数突然不再进入 DLL,我将不胜感激. 我知道这很模糊,如果需要更多信息,我很乐意提供。谢谢!
更新:我已经尝试了给定的建议,但我仍然卡住了。__declspec(dllexport)
显然没有在整个项目中使用。使用 Dependency Walker 打开 DLL 会显示一个空白的右上角部分,它下面的部分列出了错误消息中的函数。如果我检查Undecorate C++ Functions它看起来不错,但如果我不检查,我会从错误消息中得到奇怪的问号和 @s,并且最后似乎有所不同:
?methodName@className@@UAEXXZ
?methodName@className@@UAEXH@Z
也许这就是问题所在,但我不知道这意味着什么,可能是什么原因造成的,以及我能做些什么。