一、现象:QT中调用VS生成的DLL动态库成功,但调用静态lib库失败,通常提示xxx.a文件未找到
二、原因:首先dll动态库与lib静态库区别在于,调用前者时只是跳转到dll中函数入口地址,函数的具体内容在编译时并不加载,只有运行时才会加载;调用后者则在编译阶段就会加载lib内具体函数实体,这就要求生成lib的编译器与应用程序的编译器相兼容。
QT的编译器一般为MINGW,VS编译器随版本更新一般为VS20XX,二者并不兼容,所以加载不了lib静态库
三、解决方法:1、静态库转为动态库(需源代码) 2、QT编译器设置为VS版本 3、在VS中将静态库lib加一层封装为动态库dll,再QT中调用。