QT-osgQOpenGL.lib: error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug”

Posted fkdelphi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT-osgQOpenGL.lib: error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug”相关的知识,希望对你有一定的参考价值。

相关资料:
VS设置方法:https://blog.csdn.net/liukang325/article/details/78584625
QT设置方法:https://www.zhihu.com/question/52165737

问题情况:
自己生成了一个OSG的osgQOpenGL.lib库文件,自己写了一个小程序调用没有问题,用单位产品调用也没有问题(注意:这里说的是在QT中调用)。但是写了一个功能相同的xamke.lua后,发现xmake生成到最后提示“osgQOpenGL.lib: error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug”(osgQOpenGLWidget.obj 中) ”

问题原因:
网上查了一下,说是调用库的时候,用的运行库信息设置不相同。比如DLL用的是MD,调用的EXE用的是MT。

问题处理:
因为xmake用的是MT设置,所以我只好把生成lib库的工程改成了MT。
在osgQOpenGL.pro中增加二行代码如下:
QMAKE_CXXFLAGS_RELEASE += /MT
QMAKE_CFLAGS_RELEASE += /MT
注意:之后在QT中调用的EXE工程也要增加这二行,要不然xmake好了后,QT生成不了EXE了。

有四个选项及含义分别如下:
多线程调试Dll (/MDd) 对应的是MD_DynamicDebug
多线程Dll (/MD) 对应的是MD_DynamicRelease
多线程(/MT) 对应的是MD_StaticRelease
多线程(/MTd)对应的是MD_StaticDebug

以上是关于QT-osgQOpenGL.lib: error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug”的主要内容,如果未能解决你的问题,请参考以下文章

56_异常处理error,errors和painc的使用

SQUASHFS ERROR

Error 500

新浪微博Error_code: 400; Error: 40022:Error: source paramter(appkey) is missing的解决方法

C++ error c2248

Error 500--Internal Server Error如何解决