首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Qt中的"LNK1104:无法打开文件mclmcrrtd.lib“错误

Qt中的"LNK1104:无法打开文件mclmcrrtd.lib“错误
EN

Stack Overflow用户
提问于 2021-12-17 07:20:02
回答 1查看 351关注 0票数 1

我通过编译我用*.dll运行时编译器在MATLAB中开发的应用程序生成了动态链接库文件。我正在使用Qt环境中的MSVC编译器和qmake工具集来分发和/或使用我在Windows OS环境下用MATLAB开发的应用程序中的过程。但是我在添加动态链接库(例如mclmcrrt.liblibmx.liblibmex.liblibmat.liblibfixedpoint.lib等)时遇到了困难。由MATLAB运行时编译器与我的项目共享。当我在Qt环境中构建项目时,我会得到以下错误:

代码语言:javascript
运行
复制
* LNK1104: cannot open file 'mclmcrrtd.lib'

* U1077: "\VS\Tools\MSVC\{Version}\bin\HostX86\x64\link.EXE": return code '0x450'

* U1077: "\VS\Tools\MSVC\{Version}\bin\HostX86\x64\nmake.exe": return code '0x2'

我该如何解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-17 07:20:02

1.错误的定义

我通过启动一个类似的项目来测试这个bug。当我在Qt创造者中编译项目时,我得到了以下错误:

LNK1104:无法打开文件“mclmcrrtd.lib”

2.纠正错误的步骤

按照以下步骤解决问题:

  1. 我没有在QT Creator中手动添加依赖项。通过右键单击项目名称并转到Add Library > External Library,我添加了一个动态库。我在QT Creator中的外部库窗口中使用了以下设置,使用这些设置添加了文件和目录:
代码语言:javascript
运行
复制
 * Linkage: Dynamic
 * Mac: Library

 * [✔] Library inside "debug" or "release" subfolder
 * [ ] Add "d" suffix for debug version
 * [ ] Remove "d" suffix for release version
  1. 我研究了第二步打开的窗口如何将有关动态库的信息传递给*.pro文件。我在~/lib/win64/目录中选择了~/lib/win64/文件,并在Qt Creator上的外部库窗口中单击了Next按钮。我看到mclmcrrt.lib库在Win32Win64Unix系统中以这种方式导入到Qt Creator (比如lmclmcrrtlmclmcrrtdlmclmcrrt)中有不同的名称。
代码语言:javascript
运行
复制
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/'../../../../Program Files/MATLAB/R2018B/extern/lib/win64/microsoft/' -lmclmcrrt
else:win32:CONFIG(release, debug|release): LIBS += -L$$PWD/'../../../../Program Files/MATLAB/R2018B/extern/lib/win64/microsoft/' -lmclmcrrtd
else:unix: LIBS += -L$$PWD/'../../../../Program Files/MATLAB/R2018B/extern/lib/win64/microsoft/' -lmclmcrrt

INCLUDEPATH += $$PWD/'../../../../Program Files/MATLAB/R2018B/extern/lib/win64/microsoft'
DEPENDPATH += $$PWD/'../../../../Program Files/MATLAB/R2018B/extern/lib/win64/microsoft'
  1. 这是我如何学习如何正确导入文件和目录到我的项目文件。我自己手动添加了所有的需求;我没有使用这个接口来避免文件和目录的混乱。
代码语言:javascript
运行
复制
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/'../../../../Program Files/MATLAB/R2018B/extern/lib/win64/microsoft/' -lmclmcrrt
else:win32:CONFIG(release, debug|release): LIBS += -L$$PWD/'../../../../Program Files/MATLAB/R2018B/extern/lib/win64/microsoft/' -lmclmcrrtd
else:unix: LIBS += -L$$PWD/'../../../../Program Files/MATLAB/R2018B/extern/lib/win64/microsoft/' -lmclmcrrt

INCLUDEPATH += $$PWD/'../../../../Program Files/MATLAB/R2018B/extern/include'
INCLUDEPATH += $$PWD/'../../../../Program Files/MATLAB/R2018B/extern/include/win64'
INCLUDEPATH += $$PWD/'../../../../Program Files/MATLAB/R2018B/extern/lib/win64/microsoft'
DEPENDPATH += $$PWD/'../../../../Program Files/MATLAB/R2018B/extern/lib/win64/microsoft'
  1. 当使用Build > Rebuild All Projects命令在Qt 中编译项目时,我再次得到了错误LNK1104: Cannot open file 'mclmcrrtd.lib'。我发现这是因为旧的MATLAB编译运行时(MCR)只适用于x86体系结构。出于这个原因,我发现互联网上的许多示例项目都使用了win32标记在*.pro文件中的描述中。但是,我认为使用win32标记是不正确的,因为从当前MSVCC:\Program Files(x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\{Version}\bin\HostX64\x64\cl.exe目录调用短语HostX64\x64是不正确的。包含相关代码块的*.pro文件中的最终配置如下所示并成功
代码语言:javascript
运行
复制
LIBS += -L$$PWD/'../../../../Program Files/MATLAB/R2018B/extern/lib/win64/microsoft/' -lmclmcrrt
INCLUDEPATH += $$PWD/'../../../../Program Files/MATLAB/R2018B/extern/include'
INCLUDEPATH += $$PWD/'../../../../Program Files/MATLAB/R2018B/extern/include/win64'
INCLUDEPATH += $$PWD/'../../../../Program Files/MATLAB/R2018B/extern/lib/win64/microsoft'
DEPENDPATH += $$PWD/'../../../../Program Files/MATLAB/R2018B/extern/lib/win64/microsoft'

3.资源

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70389630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档