使用另一个文件夹中的目标文件编译MEX文件

时间:2012-05-24 15:25:25

标签: matlab mex

我正在写一些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命令上的-Lfoldermex选项,但这些选项对我没用。我认为必须有一种简单的方法来做我想做的事情,但我找不到合适的文件或自己弄明白。任何帮助将不胜感激。

2 个答案:

答案 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.这很方便。