我有一个关于C++动态库的问题。通常,C++动态库由一个.lib文件和一个.dll文件组成。如果我理解得很好,当.dll包含实现时,.lib文件记录了导出函数的位置。我知道发布版本有一些优化,因此发布dll和调试dll应该是不同的。那么,发布库文件和调试库文件之间的主要区别是什么?有没有办法区分lib (或dll)文件是发布版本还是调试版本?如果发布版本的程序调用调试版本库,会发生什么?谢谢!
发布于 2012-09-12 21:26:30
请注意,"Release“和"Debug”只是一组编译器和链接器标志和设置的标签,通常内部"Release“构建仍然会生成调试信息,但会有更高的优化设置。
因此,没有标准的方法来辨别lib或DLL是“发布”还是“调试”版本,除非它由诸如"d“后缀或库的位置之类的东西显式地指示。
当“发布”配置可执行文件调用到“调试”配置库中时会发生什么,这取决于两者之间不同的特定编译和链接器设置。在几乎所有的情况下,你都会遇到很多麻烦,有时是非常明显的,有时是更隐蔽的。一些常见的故障来源:
https://stackoverflow.com/questions/12389074
复制相似问题