qt自动加载dll

qt自动加载dll

qt的dll有debug版本和release版本,这两个版本的dll都在同一个文件夹下面,它们之间的区别就是debug版本带了一个d后缀,如下图

qt自动加载dll

​在一个qt的vs项目中,当vs为debug版本的时候,ide会自动加载带d后缀的dll;当vs为release版本时,ide又会自动加载不带d后缀的dll。

假设我们自己的dll也是两个版本,区别和qt一样,且都是放在同一个目录下面;这个时候我们怎么区分他们呢?

debug和release版本生成的dll名字是一样的,如果我们仅仅是把debug版本下面的dll加一个d后缀就放到一起,那是不行的,当我们在debug下面使用dll时,程序依然加载release版本的dll,调试程序的时候就会崩溃。

​解决方案:设置debug的项目属性,使之编译生成的dll就是带d后缀的

假设我有一个dll1工程,在debug版本下,修改项目property,如下图,在targetname那里加一个d后缀
qt自动加载dll
然后我们继续看linker输出文件是否带有d后缀
qt自动加载dll
qt自动加载dll
qt自动加载dll
qt自动加载dll
所有输出文件都带有d后缀,我们就可以睡大觉了,输出结果

qt自动加载dll