C++ 在版本DLL中生成时发生LNK2001错误
我正在ApacheActiveMQCMS库中做一些更改(一个潜在的错误修复)。我已经修复了这个bug,并在调试模式下进行了测试。现在我想把它的发布dll添加到我的项目中。当我尝试使用Release DLL配置构建时,出现以下错误: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
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)
- 链接器>>输入:添加了
,因为它依赖于Apache运行时libapr-1.lib
- 链接器>>调试>>生成调试信息:
Yes(/Debug)
- 链接器>>系统>>子系统:
Windows(/SubSystem:Windows)
- 链接器>>高级>>目标计算机:
MachineX86(/Machine:X86)
- 链接器>>高级>>错误报告:
立即(/ERRORREPORT:PROMPT)
- 在调试和发布配置中使用的include和lib路径是正确的
- 我正在使用VisualStudio2010快速版
DiscoveryTransport
类无关。我已经试了两天了。如有任何帮助/建议,将不胜感激
关于您可能忘记了将库添加到发布版本设置中。添加了库包含和库路径,我已对它们进行了计数器检查。在链接器->输入->发布DLL构建的附加库中添加库名称。我也提到过这个问题。你在建造之前清洗过溶液吗?也许不是,但值得一试。是的,我确实清理了——重建了这个项目。在您的注释后再次执行了清理,然后重新生成,产生了相同的错误。作为临时解决方法,您可以复制调试配置并打开优化,以查看其是否有效。您可能忘记了将库添加到发布版本设置中。添加了库包含和库路径,我已对它们进行了计数器检查。在链接器->输入->发布DLL构建的附加库中添加库名称。我也提到过这个问题。你在建造之前清洗过溶液吗?也许不是,但值得一试。是的,我确实清理了——重建了这个项目。在注释后再次执行清理,然后重新生成,产生相同的错误。作为临时解决方法,您可以复制调试配置并打开优化,以查看其是否有效。