[英]Entry Point Not Found
我在尝试运行链接到我的 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 的程序使用所有这三个文件的修改版本。
此错误消息实际上对您很有帮助,因为它会确保接口的两端匹配,然后您才能继续执行代码。
更新
我在上面的文字中没有说得足够清楚。 每当您更改 DLL 的接口时,您必须执行以下操作:
您的 dll 中似乎缺少Music::Music(class Music const &)
。 ??0Music@@QAE@ABV0@@Z
是这个函数的重命名。 您可以使用此站点对函数名称进行解构。
再次查看编译器标志以检查是否包含-static-libstdc++。在这种情况下,您必须重建应用程序。
在你的 C++ 代码中试试这个
extern "C"
{
inline __declspec(dllexport) int MyFunction()
{
return 63;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.