首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

MATLAB MEX 編譯 LNK2019:缺少類別實作導致連結失敗

     編輯:程式設計綜合問答

錯誤訊息解讀

error LNK2019: 無法解析的外部符號 "public: __thiscall Graph::~Graph(void)"
// 以及 reallocate_nodes, reallocate_arcs, maxflow, Graph 建構子

表示 mex_maxflow.cpp 使用了 Graph 類別,但**僅包含宣告(頭檔),缺少實作(.cpp)參與編譯**

.

解決方法

  1. 將所有相關 .cpp 加入 MEX 編譯:
    mex mex_maxflow.cpp Graph.cpp OtherImpl.cpp
  2. 或預先編譯為靜態庫:
    mex -c Graph.cpp  // 產生 Graph.obj
    mex mex_maxflow.cpp Graph.obj
  3. 若實作在頭檔:確認模板/inline 函式定義在 .h 中,且 mex_maxflow.cpp 已 #include "Graph.h"。

常見誤區

  • 以為 MEX 僅需單一 .cpp,實則與一般 C++ 專案相同,**所有轉譯單元必須參與建置**。
  • 64 位編譯成功不代表 32 位也能成功,需分別編譯對應架構的 MEX(mexw64 vs mexw32)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved