【问题标题】:The procedure entry point could not be located in the dynamic link library Core.dll过程入口点无法位于动态链接库 Core.dll 中
【发布时间】:2010-12-07 10:17:33
【问题描述】:

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

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

我写了一个简单的销毁方法,如下所示:

LudoMemory *memory_Singleton = NULL;

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-08-13
          • 2018-09-23
          • 2021-02-16
          • 1970-01-01
          • 2014-07-22
          • 1970-01-01
          相关资源
          最近更新 更多