当我试图运行一个链接到我的DLL的应用程序时,我遇到了一个奇怪的错误(我已经有一段时间没有修改代码了,因为它工作得很好)。这个DLL过去是可以工作的,但我一直在对DLL的代码进行修改,并使其能够正常编译。不幸的是,在尝试运行应用程序时...
---------------------------
GameTest001.exe - Entry Point Not Found
---------------------------
The procedure entry point ??0Music@@QAE@ABV0@@Z could not be located in the dynamic link library Renderer02.dll.
---------------------------
OK
---------------------------我不知道如何解释这个错误。我知道我做了哪些更改,并且我的代码看起来很好。我试着用谷歌搜索了一下,结果一点运气都没有。
有人能对此有什么见解吗?这个错误是什么意思?
发布于 2013-06-17 02:28:38
您正在链接到一个导出的函数,该函数的名称已损坏,该名称为??0Music@@QAE@ABV0@@Z。正在加载的DLL不会导出具有该名称的函数,因此会出现错误。
名称损坏对函数的名称、参数和返回值进行编码。因此,不匹配的最可能原因是您在一个位置更改了函数的名称、参数或返回值,但在另一个位置没有更改。
如果更改了DLL,则需要重新编译它以生成新的.lib和.dll文件。您还将修改.h文件。确保链接到DLL的程序使用所有这三个文件的修改版本。
此错误消息实际上对您很有帮助,因为它将确保接口的两端都匹配,然后才能继续执行代码。
更新
我在上面的文本中说得不够清楚。无论何时更改DLL的接口,都必须执行以下操作:
DLL更新application.
发布于 2013-06-17 02:30:14
您的动态链接库中似乎缺少Music::Music(class Music const &)函数。??0Music@@QAE@ABV0@@Z是此函数的损坏名称。你可以使用this site来分解函数名。
发布于 2021-03-29 00:02:11
再次查看编译器标志,检查- included.In -libstdc++是否为静态,如果是这种情况,您必须重新构建应用程序。
https://stackoverflow.com/questions/17136315
复制相似问题