最近在看matlab code時,由於本人使用的是64系統,而code中的mex文件時在32位系統上編譯的,所以需要重新自己編譯maxflowmex.cpp,但是直接mex maxflowmex.cpp時,出現以下錯誤:
maxflowmex.obj : error LNK2019: 無法解析的外部符號 "public: __cdecl Graph<float,float,float>::Graph<float,float,float>(int,int,void (__cdecl*)(char *))" (??0?$Graph@MMM@@QEAA@HHP6AXPEAD@Z@Z),該符號在函數 mexFunction 中被引用
問題的原因是無法需要編譯多個cpp文件所致。maxflowmex.cpp中包含頭肩為#include "maxflow-v3.01/graph.h",所以從網上下載maxflow-v3.01放到相應目錄下,如下圖所示
觀察maxflow-v3.01中有graph.cpp和maxflow.cpp,所以在命令行中輸入mex maxflow-v3.01/maxflow.cpp maxflow-v3.01/graph.cpp maxflowmex.cpp即可。搞定!