C++/MATLAB 引擎的 Makefile API

Makefile for C++/MATLAB Engine API

如果我理解正确,API 背后的想法是能够从 C++ 和 MATLAB 来回传递一些数据(前提是 MATLAB 环境已启动并且 运行ning 在计算机上) 两全其美。

具体来说,我想做的是在模拟代码中使用 API,这样每次我想从我的 C++ 程序中获取绘图时都不必手动打开 MATLAB。我知道还有其他选项,例如在 MATLAB 中直接使用 mex 进行编译(我无法这样做,因为当我执行编译文件时它无法正确加载共享库)...

对于初学者,我一直在尝试执行MATLAB提供的示例(engdemo.cpp)。

我尝试更新我的 makefile 以包含库和对必要头文件的引用:

MATLABROOT = /.../matlab/r2012b

CFLAGS = -I${MATLABROOT}/extern

LIBS = -L${MATLABROOT}/bin/glnxa64

Then g++ $(CFLAGS) $(LIBS) -leng -lmx demo.cpp -o demo

但是我收到一堆关于 libeng 和 libmx 无法找到其他 *.so 文件的警告。

当我手动检查包含 *.so 的文件夹(即 .../bin/glnxa64)时,我意识到它们不叫 -leng 和 -lmx,而是叫 libeng 和 libmx。

1) 那么首先我想知道为什么我必须用不同的方式来称呼它们?

警告消息建议我使用 -rpath-rpath-link 选项,我猜这是一些一种递归,我不明白,因为所有 *.so 都在同一个文件夹中。我仍然尝试过但没有用,因为该选项无法被识别。因此,我尝试手动请求执行另一个 *.so 并且它对其中一些但不是全部有效并且我当时仍然不明白为什么它们应该被称为 -l*** insted of -lib* **.

2) 所以我的第二个问题是,我能做些什么来解决这个问题,或者有没有简单的方法来 运行 这个例子?

这是终端输出的屏幕截图:

我认为这两种情况都是版本控制问题。我重新安装并且(几乎)一切正常。