最近在看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即可。搞定!