我正在将我的项目转换为使用DLL,并试图拆分我的Singleton
类以避免使用模板。
我的班级LudoMemory
,最初继承自Singleton
。我试图赋予它现在销毁和创建自己的功能,让我的主引擎不依赖于Singleton
。
我写了一个简单的破坏方法,如:
LudoMemory *memory_Singleton = NULL;
void LudoMemory::Destroy()
{
LUDO_SAFE_DELETE(m_Singleton)
}
并且在运行程序时(没有编译器错误)我收到了这个错误:
程序入口点 ?Destroy @ LudoMemory @@ SAXXZ不能 位于动态链接库中 LudoCore.dll
LudoCore
是LudoMemory
所属的项目。为什么会这样?我该如何解决?
答案 0 :(得分:9)
您的系统上没有多个版本的ludocore.dll,对吗? 过程入口点错误通常意味着:您根据ludocore.lib版本x编译了项目,并且在运行程序时,它使用ludocore.dll版本y,而版本y没有定义LudoMemory :: Destroy()。
答案 1 :(得分:2)
Jacob关于多个DLL版本的答案似乎很可能。
此外,对于某些构建系统,您必须明确列出将在DLL中导出的函数。
研究您的构建环境,看看是否必须提供要作为入口点导出的方法列表。
答案 2 :(得分:0)
在Visual Studio构建环境中,您也可以尝试通过在链接器优化设置中禁用引用[否(/ OPT:NOREF)]