3

我正在编写一些 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

以及命令上的-Ipathnameand-Lfolder选项mex,但这些对我不起作用。我认为必须有一种简单的方法来做我想做的事情,但我就是找不到合适的文档或自己弄清楚。任何帮助,将不胜感激。

4

2 回答 2

1

[OP的解决方案转换为下面的答案]

在上面给出的设置中,使用以下命令可以满足我的需要:

mex -Icode mexfile.c code/other1.o code/other2.o code/other3.o

我在重新生成错误消息时偶然发现了这个解决方案。

我猜这只是命令-Ipathname选项的适当语法mex,但我找不到支持这个结论的文档。如果其他人可以提供指向实际文档的链接,那肯定比碰巧对我有用的潜在解决方案要好。

于 2014-11-05T11:54:41.317 回答
0

我使用类似的东西

emlc -I './somedir/' -o sourcefilemex -T mex sourcefile

通过更改 -T 参数,您可以生成 mex 代码或可嵌入的 C。这很方便。

于 2012-06-05T17:42:23.917 回答