我正在写一些MATLAB代码,我想使用一些优化的C例程。我有C源代码,它工作得很好。我已经创建了一个MEX文件并且能够编译它,前提是它与优化的C例程位于同一个文件夹中。但是,我希望能够在各种平台上将此代码分发给其他人。由于MEX文件是二进制文件,因此每个人都必须(可能)在自己的计算机上重新编译。这很好,但我想让这个过程尽可能轻松。
目前,如果所有文件都在同一目录中,则调用类似
的内容mex mexfile.c other1.o other2.o other3.o
来自该目录的可以正常工作。但是,出于组织目的,我希望C代码位于其自己的(子)目录中,例如code
。不幸的是,如果我构造这样的东西,mex
命令会出错(错误因我尝试过的不同而不同)。我尝试过像
mex mexfile.c code/other1.o code/other2.o code/other3.o
{p>以及-Ipathname
命令上的-Lfolder
和mex
选项,但这些选项对我没用。我认为必须有一种简单的方法来做我想做的事情,但我找不到合适的文件或自己弄明白。任何帮助将不胜感激。
答案 0 :(得分:1)
[OP的解决方案转换为以下答案]
在上面给出的设置中,使用以下命令可以按照我的要求工作:
mex -Icode mexfile.c code/other1.o code/other2.o code/other3.o
我在重新生成错误消息时偶然发现了这个解决方案。
我猜这只是-Ipathname
命令的mex
选项的适当语法,但我找不到支持此结论的文档。如果其他人可以提供实际文档的链接,那肯定会比恰好适用于我的潜在解决方案更好。
答案 1 :(得分:0)
我使用的是
emlc -I './somedir/' -o sourcefilemex -T mex sourcefile
通过更改-T参数,您可以生成mex代码或嵌入C.这很方便。