0

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

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

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

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

MATLABROOT = /.../matlab/ r2012b

CFLAGS = -I${MATLABROOT}/extern

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

然后 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)所以我的第二个问题是,我能做些什么来解决这个问题,或者有没有简单的方法来运行这个例子?

这是终端输出的屏幕截图: 终端输出,参考文献中缺少链接

4

1 回答 1

0

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

于 2016-02-17T06:52:57.333 回答