无法在动态链接库Core.dll中找到过程入口点

时间:2009-10-16 16:00:26

标签: c++ dll visual-studio-2005 singleton linker

我正在将我的项目转换为使用DLL,并试图拆分我的Singleton类以避免使用模板。

我的班级LudoMemory,最初继承自Singleton。我试图赋予它现在销毁和创建自己的功能,让我的主引擎不依赖于Singleton

我写了一个简单的破坏方法,如:

LudoMemory *memory_Singleton = NULL;

    void LudoMemory::Destroy()
    {
        LUDO_SAFE_DELETE(m_Singleton)
    }

并且在运行程序时(没有编译器错误)我收到了这个错误:

  

程序入口点   ?Destroy @ LudoMemory @@ SAXXZ不能   位于动态链接库中   LudoCore.dll

LudoCoreLudoMemory所属的项目。为什么会这样?我该如何解决?

3 个答案:

答案 0 :(得分:9)

您的系统上没有多个版本的ludocore.dll,对吗? 过程入口点错误通常意味着:您根据ludocore.lib版本x编译了项目,并且在运行程序时,它使用ludocore.dll版本y,而版本y没有定义LudoMemory :: Destroy()。

答案 1 :(得分:2)

Jacob关于多个DLL版本的答案似乎很可能。

此外,对于某些构建系统,您必须明确列出将在DLL中导出的函数。

研究您的构建环境,看看是否必须提供要作为入口点导出的方法列表。

答案 2 :(得分:0)

在Visual Studio构建环境中,您也可以尝试通过在链接器优化设置中禁用引用[否(/ OPT:NOREF)]