当我尝试运行链接到 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
---------------------------
我不知道如何解释这个错误。我知道我做了哪些更改,并且我的代码对我来说看起来很好。我试过用谷歌搜索这个,但一点运气都没有。
任何人都可以对此有任何见解吗?这个错误是什么意思?
您正在链接到一个已导出的带有损坏名称的函数,该名称是??0Music@@QAE@ABV0@@Z
。正在加载的 DLL 不会导出该名称的函数,因此会出现错误。
名称修饰对函数的名称、参数和返回值进行编码。因此,导致不匹配的最可能原因是您在一处更改了函数的名称、参数或返回值,但没有更改另一处。
如果您更改了 DLL,则需要重新编译它以生成新的 .lib 和 .dll 文件。您还将修改 .h 文件。确保链接到 DLL 的程序使用所有这三个文件的修改版本。
该错误消息实际上对您很有帮助,因为它将确保界面的两侧都匹配,然后才能继续执行代码。
Update
我在上面的文字中说得不够清楚。每当您更改 DLL 的接口时,您必须执行以下操作:
- 更新应用程序使用的所有 .h 文件。
- 重新编译 DLL 以生成新的 .lib 和 .dll 文件。
- 使用更新的 .lib 和 .h 文件重新编译应用程序。
- 分发新的 .dll 文件,以便更新的应用程序加载更新的 DLL。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)