【问题标题】:"LNK1104: cannot open file mclmcrrtd.lib" Error in Qt Creator“LNK1104:无法打开文件 mclmcrrtd.lib”Qt Creator 中的错误
【发布时间】:2022-01-20 04:05:21
【问题描述】:

我通过使用 MRC(MATLAB 运行时编译器)编译我在 MATLAB 中开发的应用程序来生成 *.dll 动态链接库文件。我在 Qt Creator 环境中使用 MSVC 编译器和 qmake 工具集来分发和/或使用我在 Windows 操作系统环境中的 MATLAB 中开发的应用程序中的过程。但我无法将 MATLAB 运行时编译器共享的动态链接库(例如 mclmcrrt.liblibmx.liblibmex.liblibmat.liblibfixedpoint.lib 等)添加到我的项目中。在 Qt Creator 环境中构建项目时,出现以下错误:

* 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'

我该如何解决这个问题?

【问题讨论】:

    标签: c++ qt qmake matlab-compiler


    【解决方案1】:

    1。错误定义

    我通过启动一个类似的项目来测试这个错误。当我在Qt Creator 编译项目时,出现以下错误:

    LNK1104: 无法打开文件'mclmcrrtd.lib'

    2。修复错误的步骤

    按照以下步骤解决问题:

    1. 我没有在 QT Creator 中手动添加依赖项。我通过右键单击项目名称并转到Add Library > External Library 添加了一个动态库。我在 QT CreatorExternal Library 窗口中使用了以下设置,我使用这些设置添加了文件和目录:
     * 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/ 目录中的mclmcrrt.lib 文件,然后单击Qt CreatorExternal Library 窗口中的Next 按钮。我看到mclmcrrt.lib 库在导入到 Qt Creator 时在 Win32Win64Unix 系统中的命名不同> 以这种方式(如lmclmcrrtlmclmcrrtdlmclmcrrt)。
    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. 这就是我学习如何将文件和目录正确导入项目文件的方法。我自己手动添加了所有要求;我没有使用界面来避免文件和目录混淆。
    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. Qt Creator中使用Build > Rebuild All Projects命令编译项目时,我再次收到错误LNK1104: Cannot open file 'mclmcrrtd.lib'。我发现这是因为旧的MATLAB Compiler Runtime (MCR) 只适用于x86 架构。出于这个原因,我发现互联网上的许多示例 QT-Matlab Compiler Runtime 项目在 *.pro 文件的描述中使用了win32 标签。但是,我认为使用win32 标记是不正确的,因为当从当前MSVCC:\Program Files(x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\{Version}\bin\HostX64\x64\cl.exe 目录调用时,使用短语HostX64\x64。包含相关代码块的*.pro文件中最终配置如下并成功
    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。资源

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-20
      相关资源
      最近更新 更多