C++ 在版本DLL中生成时发生LNK2001错误

C++ 在版本DLL中生成时发生LNK2001错误,c++,visual-c++,linker,release,activemq-cpp,C++,Visual C++,Linker,Release,Activemq Cpp,我正在ApacheActiveMQCMS库中做一些更改(一个潜在的错误修复)。我已经修复了这个bug,并在调试模式下进行了测试。现在我想把它的发布dll添加到我的项目中。当我尝试使用Release DLL配置构建时,出现以下错误: DiscoveryTransport.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall activemq::util::Suspendable::~Suspendab

我正在ApacheActiveMQCMS库中做一些更改(一个潜在的错误修复)。我已经修复了这个bug,并在调试模式下进行了测试。现在我想把它的发布dll添加到我的项目中。当我尝试使用Release DLL配置构建时,出现以下错误:

DiscoveryTransport.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall activemq::util::Suspendable::~Suspendable(void)" (??1Suspendable@util@activemq@@UAE@XZ)
.lib和.exp文件正在成功创建。请注意以下调查结果:

  • 它在调试(静态库)和发布(静态库)配置中编译良好

请考虑以下配置:

  • 平台工具集:
    VisualStudio2008(v90)
    [我的构建需要]

  • 配置类型:
    动态库(.dll)

  • 整个程序优化:
    使用链接时间代码生成
    *尝试了
    没有整个程序优化
    没有运气

  • 字符集:
    未按照调试和发布配置中的设置
    *

  • C/C++>>常规>>调试信息格式:
    程序数据库(/Zi)

  • C/C++>>优化:
    最大化速度(/O2)

  • C/C++>>代码生成>>运行时库:多线程DLL(/MD)*尝试了(/MDd),但没有成功

  • C/C++>>预编译头:
    不使用预编译头

  • C/C++>>高级>>调用约定:
    \uu cdecl(/Gd)

  • 链接器>>输入:添加了
    libapr-1.lib
    ,因为它依赖于Apache运行时

  • 链接器>>调试>>生成调试信息:
    Yes(/Debug)

  • 链接器>>系统>>子系统:
    Windows(/SubSystem:Windows)

  • 链接器>>高级>>目标计算机:
    MachineX86(/Machine:X86)

  • 链接器>>高级>>错误报告:
    立即(/ERRORREPORT:PROMPT)

  • 在调试和发布配置中使用的include和lib路径是正确的

  • 我正在使用VisualStudio2010快速版

我更改的代码与
DiscoveryTransport
类无关。我已经试了两天了。如有任何帮助/建议,将不胜感激


关于

您可能忘记了将库添加到发布版本设置中。添加了库包含和库路径,我已对它们进行了计数器检查。在链接器->输入->发布DLL构建的附加库中添加库名称。我也提到过这个问题。你在建造之前清洗过溶液吗?也许不是,但值得一试。是的,我确实清理了——重建了这个项目。在您的注释后再次执行了清理,然后重新生成,产生了相同的错误。作为临时解决方法,您可以复制调试配置并打开优化,以查看其是否有效。您可能忘记了将库添加到发布版本设置中。添加了库包含和库路径,我已对它们进行了计数器检查。在链接器->输入->发布DLL构建的附加库中添加库名称。我也提到过这个问题。你在建造之前清洗过溶液吗?也许不是,但值得一试。是的,我确实清理了——重建了这个项目。在注释后再次执行清理,然后重新生成,产生相同的错误。作为临时解决方法,您可以复制调试配置并打开优化,以查看其是否有效。