【发布时间】:2021-05-26 10:51:31
【问题描述】:
我用 Visual Studio 2019 构建了一个 wxwidgets c ++ 程序,在我的电脑上没有问题,但是当我尝试在另一台电脑上启动它时,我收到了缺少库的消息。我搜索了互联网,并被建议将代码生成设置从 DLLMultiThread (/MD) 更改为 MultiThread (/MT),我重新构建了项目并收到了几条错误消息,例如:
1> wxbase31u.lib (string.obj):错误 LNK2038:检测到“RuntimeLibrary”不匹配:值“MD_DynamicRelease”与 Window.obj 中的“MT_StaticRelease”不匹配
1> wxbase31u.lib (thread.obj): error LNK2038: mismatch found for 'RuntimeLibrary': value 'MD_DynamicRelease' 与 Window.obj 中的 'MT_StaticRelease' 不匹配
1> wxbase31u.lib (list.obj):错误 LNK2038:发现“RuntimeLibrary”不匹配:值“MD_DynamicRelease”与 Window.obj 中的“MT_StaticRelease”不匹配
1> wxbase31u.lib (appbase.obj):错误 LNK2038:发现“RuntimeLibrary”不匹配:值“MD_DynamicRelease”与 Window.obj 中的“MT_StaticRelease”不匹配
1> wxbase31u.lib (time.obj):错误 LNK2038:检测到“RuntimeLibrary”不匹配:值“MD_DynamicRelease”与 Window.obj 中的“MT_StaticRelease”不匹配
1> wxbase31u.lib (hashmap.obj):错误 LNK2038:检测到“RuntimeLibrary”不匹配:值“MD_DynamicRelease”与 Window.obj 中的值“MT_StaticRelease”不匹配
1> wxbase31u.lib (object.obj):错误 LNK2038:发现“RuntimeLibrary”不匹配:值“MD_DynamicRelease”与 Window.obj 中的“MT_StaticRelease”不匹配
1> wxbase31u.lib (strconv.obj):错误 LNK2038:为“RuntimeLibrary”找到不匹配:值“MD_DynamicRelease”与 Window.obj 中的“MT_StaticRelease”不匹配
1> wxbase31u.lib (log.obj):错误 LNK2038:发现“RuntimeLibrary”不匹配:值“MD_DynamicRelease”与 Window.obj 中的“MT_StaticRelease”不匹配
1> wxbase31u.lib (event.obj):错误 LNK2038:发现“RuntimeLibrary”不匹配:值“MD_DynamicRelease”与 Window.obj 中的“MT_StaticRelease”不匹配
1> wxbase31u.lib (stringimpl.obj): error LNK2038: mismatch found for 'RuntimeLibrary': value 'MD_DynamicRelease' 与 Window.obj 中的 'MT_StaticRelease' 不匹配
1> wxbase31u.lib (strvararg.obj):错误 LNK2038:发现“RuntimeLibrary”不匹配:值“MD_DynamicRelease”与 Window.obj 中的值“MT_StaticRelease”不匹配
1> wxbase31u.lib (unichar.obj):错误 LNK2038:为“RuntimeLibrary”找到不匹配:值“MD_DynamicRelease”与 Window.obj 中的“MT_StaticRelease”不匹配
1> wxbase31u.lib (stringops.obj):错误 LNK2038:为“RuntimeLibrary”找到不匹配:值“MD_DynamicRelease”与 Window.obj 中的“MT_StaticRelease”不匹配
1> wxbase31u.lib (intl.obj):错误 LNK2038:为“RuntimeLibrary”找到不匹配:值“MD_DynamicRelease”与 Window.obj 中的“MT_StaticRelease”不匹配
1> wxbase31u.lib (wxcrt.obj):错误 LNK2038:发现“RuntimeLibrary”不匹配:值“MD_DynamicRelease”与 Window.obj 中的值“MT_StaticRelease”不匹配
1> wxbase31u.lib (xlocale.obj):错误 LNK2038:发现“RuntimeLibrary”不匹配:值“MD_DynamicRelease”与 Window.obj 中的“MT_StaticRelease”不匹配
1> wxbase31u.lib (dummy.obj):错误 LNK2038:发现“RuntimeLibrary”不匹配:值“MD_DynamicRelease”与 Window.obj 中的“MT_StaticRelease”不匹配
1> wxbase31u.lib (module.obj):错误 LNK2038:发现“RuntimeLibrary”不匹配:值“MD_DynamicRelease”与 Window.obj 中的值“MT_StaticRelease”不匹配
1> wxbase31u.lib (msgout.obj):错误 LNK2038:检测到“RuntimeLibrary”不匹配:值“MD_DynamicRelease”与 Window.obj 中的值“MT_StaticRelease”不匹配
1> wxbase31u.lib (translation.obj):错误 LNK2038:发现“RuntimeLibrary”不匹配:值“MD_DynamicRelease”与 Window.obj 中的“MT_StaticRelease”不匹配
1> wxbase31u.lib (utils.obj):错误 LNK2038:发现“RuntimeLibrary”不匹配:值“MD_DynamicRelease”与 Window.obj 中的“MT_StaticRelease”不匹配
1> wxbase31u.lib (main.obj): error LNK2038: mismatch found for 'RuntimeLibrary': value 'MD_DynamicRelease' 与 Window.obj 中的 'MT_StaticRelease' 不匹配
1> wxbase31u.lib (threadinfo.obj): error LNK2038: mismatch found for 'RuntimeLibrary': value 'MD_DynamicRelease' 与 Window.obj 中的 'MT_StaticRelease' 不匹配
1> wxbase31u.lib (arrstr.obj):错误 LNK2038:为“RuntimeLibrary”找到不匹配:值“MD_DynamicRelease”与 Window.obj 中的“MT_StaticRelease”不匹配
1> wxbase31u.lib (config.obj):错误 LNK2038:为“RuntimeLibrary”找到不匹配:值“MD_DynamicRelease”与 Window.obj 中的“MT_StaticRelease”不匹配
1> wxbase31u.lib (stdpbase.obj):错误 LNK2038:发现“RuntimeLibrary”不匹配:值“MD_DynamicRelease”
(也许这些不是警告,因为我必须用我的语言翻译它们):
我做错了什么?看不懂。
【问题讨论】:
-
我做错了什么?使用了错误的运行时值。给你的将 MD 更改为 MT 的建议是个坏建议,因为你也必须重新编译 wxWidgets 以匹配它。
-
那我该如何解决这个问题或缺少库问题(MSVC140.dll 和 VCRUNTIME140.dll 等库)?
-
最简单的方法是安装Visual Studio Redistributable。对于我的应用程序,我创建了一个基于 NSIS 的安装程序,它会与我的应用程序和数据一起自动执行此操作。可再发行版可在此处下载:https://support.microsoft.com/en-us/topic/the-latest-supported-visual-c-downloads-2647da03-1eea-4433-9aff-95f26a218cc0
标签: c++ visual-studio wxwidgets