如何通过调用c ++ dll来运行Matlab文件

时间:2017-02-05 15:24:34

标签: c++ matlab

我正在尝试从此链接运行Matlab代码:(请参阅底部的下载部分) http://cvn.ecp.fr/personnel/iasonas/sketch.html

下载源代码后,我按照readme.pdf中的步骤进行操作

我正在运行Matlab R2014a的demo1

1。)将根文件夹及其所有子文件夹放在Matlab路径中。

之外,

我进入过滤子文件夹,然后执行命令

mex iir_gauss.cpp 

显示 MEX成功完成后。我尝试在kdtree / src子文件夹中编译kdtree.cc。

但失败了:

enter image description here

错误信息是: C:\用户\用户\桌面\ ps_primal_sketch \ ps_primal_sketch \ kdtree \ SRC \ kdtree_common.h(20):致命错误C1083:无法打开 包含文件:'/ Applications / MATLAB6p5p1 / extern / include / mex.h':没有这样的文件或目录

如果没有编译文件,我就无法运行demo1,因为无法调用其中一个函数(kdtree)。

有人可以教我如何执行文件(demo1)吗?我看到kdtree \ mex \ win子文件夹中有一个kdtree.dll,我是否需要再次编译kdtree.cc文件?请详细教我,因为我是Matlab的初学者,谢谢。

1 个答案:

答案 0 :(得分:1)

我想我解开了这个难题......

将文件kdtree_common.h中的第20行替换为#include "mex.h"

问题依赖于您下载的源代码。

查看kdtree_common.h的开头 它看起来如下:

// Guy Shechter
// June 2004
// 
// Uncomment one of these includes depending on your architecture.
// Your installation location may vary.
//
//
// For Linux use this line:
//
//#include "/usr/local/matlab/extern/include/mex.h"
//
//
// For Windows systems use this line:
//
//#include "c:\matlab6p1\extern\include\mex.h"
//
//
// For Mac Os X systems use this line :
//
#include "/Applications/MATLAB6p5p1/extern/include/mex.h"
//
//

如您所见,包含路径指的是"/Applications/MATLAB6p5p1/extern/include/mex.h"

评论说" For Mac Os X systems use this line :"

由于您使用的是Windows操作系统,因此您应将其置于评论中,并从评论中删除#include "c:\matlab6p1\extern\include\mex.h"

它无法正常工作,因为它指的是旧版本的Matlab。

您不需要使用完整路径,只需将其替换为:

#include "mex.h"