我*.dll通過使用 MRC(MATLAB 運行時編譯器)編譯我在 MATLAB 中開發的應用程式生成了元件檔案。我在 Qt Creator 環境中使用 MSVC 編譯器和 qmake 工具集來分發和/或使用我在 Windows 作業系統環境中的 MATLAB 中開發的應用程式中的程序。但我無法加入相應的元件(例如mclmcrrt.lib,libmx.lib,libmex.lib,libmat.lib,libfixedpoint.lib用MATLAB運行時編譯器共享到我的專案等)。在 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'
我該如何解決這個問題?
uj5u.com熱心網友回復:
1. 錯誤的定義
我通過啟動一個類似的專案來測驗這個錯誤。當我在Qt Creator 中編譯專案時,出現以下錯誤:
LNK1104:無法打開檔案“mclmcrrtd.lib”
2. 修復錯誤的步驟
請按照以下步驟解決問題:
- 我沒有在QT Creator 中手動添加依賴項。我通過右鍵單擊專案名稱并轉到
Add Library > External Library. 我在QT Creator的外部庫視窗中使用了以下設定,我使用這些設定添加了檔案和目錄:
* Linkage: Dynamic
* Mac: Library
* [?] Library inside "debug" or "release" subfolder
* [ ] Add "d" suffix for debug version
* [ ] Remove "d" suffix for release version
- 我檢查了在第二步中打開的視窗如何將有關動態庫的資訊傳輸到*.pro檔案。我選擇了
mclmcrrt.lib目錄中的檔案,然后在Qt Creator的外部庫視窗中~/lib/win64/單擊了下一步按鈕。我看到以這種方式匯入Qt Creator時,該庫在Win32、Win64和Unix系統中的命名不同(如, , )。mclmcrrt.liblmclmcrrtlmclmcrrtdlmclmcrrt
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'
- 這就是我學習如何將檔案和目錄正確匯入到我的專案檔案中的方式。我自己手動添加了所有要求;我沒有使用界面來避免檔案和目錄混淆。
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'
Build > Rebuild All Projects在Qt Creator中使用命令編譯專案時,LNK1104: Cannot open file 'mclmcrrtd.lib'又報錯了。我發現這是因為舊的MATLAB Compiler Runtime (MCR)只適用于x86 架構。為此,我發現互聯網上的許多示例QT-Matlab Compiler Runtime專案使用*.pro檔案中win32描述中的標記。但是,我認為使用該標簽是不正確的,因為從當前MSVC的目錄中呼叫該短語。包含相關代碼塊的*.pro檔案中最終配置如下并成功win32HostX64\x64C:\Program Files(x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\{Version}\bin\HostX64\x64\cl.exe
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. 資源
- MCR - 安裝和配置 MATLAB 編譯器運行時
- MSVC - 聯結器工具錯誤 LNK1104
- Qt Creator - 向專案添加庫
- Qt Creator - 創建專案檔案 (QMake)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/386425.html
標籤:C qt qmake matlab-编译器
上一篇:檢索整個yaml物件
下一篇:將lambda轉換為sql查詢
