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