title: dll在debug和release模式下如何交叉引用？
desc: 1使用VS2012VC11生成了debug和release模式的dll，在exe中引用次dll，如果交叉引用程序会报错.例如我在debug版的exe中引用release版的dll，程序运行到dll中导出的函数会报错.<br>2在网上查阅相关资料，dll的DEBUG与RELEASE版本不能交叉调用，但是解释的不清楚.<br>3一些开源库，比如opencv，会生成debug和release的dll，在exe中必须要引用指定版本的dll，否则出错但是很多第三方的dll，debug版和release版的exe都可以引用此dll.有些dll可以交叉引用，有些不可以，两者为什么会存在差异.<br>4如果我要生成一个可以交叉引用的dll，在编写代码的过程中有哪些要求.
topic: 编程
content: 谢邀！ 一般来说，只要编译成Release的dll，肯定可以能让Debug的程序调用。如果不行，请检查其它选项是否一致，比如unicode，wchart是否内置等，还有最关键的MTdMDd运行时库选项。Debug的dll，让release来调用，就算能跑起来，也会出现不可预料的问题。毕竟调用的运行时库是不一致的。
answerer_tags: C++程序员 / 七零后