我试图C编译的共用图书馆从Matlab。我Matlab代码使用了大量的图象处理功能。因此,编制顺利,但是,当我叫dll从我的应用程序,我得到消息,如:

"不确定功能或方法'XYZ'用于输入参数的类型双"。

我已经验证了我的论点是好的-它不是一类型的问题。所以,我试图加入 %#function XYZ 到我的。m文件,但这并没有什么帮助。然后,我试图使用 -a 标志在我的编制命令:

eval(['mcc -v -N -W lib:cshared -d ' clibdir ' -T link:lib -a edge' allFiles]); 

但它没有汇编有:

Depfun错误:'无法找到边缘作为功能上MATLAB路'

我已经验证图像处理的文件是我的电脑上(我可以运行的一切从matlab没有问题)和我的路径点的目录,包含他们。

我也已经试图复制的"工具箱"。m文件进入我的工作目录,但是,快速的气球进了很多的文件。并且,对于一些职能,没有。m-只是一个。墨西哥-我还没有找到一种方法,包括墨西哥的文件进入我的.dll。

我是什么丢失?

有帮助吗?

解决方案

你有没有尝试,包括图像处理工具箱使用的文件夹 -a 选项?例如:

mcc ... -a C:\Program Files\MATLAB\R2009a\toolbox\images\images

根据 mcc 文档, 所有此文件夹中的文件,以及所有文件中的任何子文件,加入到真相和友谊委员会的档案和文件夹子树保存在真相和友谊委员会的档案。

如果你不希望包括的每一个子文件夹中,你只能加载的文件的一个文件夹中使用通配符的模式:

mcc ... -a C:\Program Files\MATLAB\R2009a\toolbox\images\images\*

这可能是必要的,如果有一个子文件夹,可能会有功能或脚本,这可能影子的父的文件夹。例如,有一个 edge.m 功能在母体文件夹 C:\Program Files\MATLAB\R2009a\toolbox\images\images\, 和有一个 ja 子文件夹,其中包含日本语言,帮助的文件 (Windows),其中一个也被称为 edge.m.你不会想要这个子文件夹要加入的当编制的,所以你可以:

  1. 除去那个子文件夹是暂时的,增加父母的文件夹没有通配符的选择(以添加其他子文件你想要的),然后把那个文件夹回。

  2. 增加父母的文件夹用通配符的选择(添加仅仅是文件),然后分别添加仅子文件你想要的(例如 @strelprivate)与一个附加的 -a 命令。 注:我不确定如果增加子文件将分别维持的文件夹子树的父目录在真相和友谊委员会档案中的同样方式选#1会!

如果你不想包括一个大型的文件的列表可以不用,你可以尝试使用的功能 DEPFUN 来第一次得到一名单的依赖关系MATLAB代码。然后从这个名单可以找到具体的图像处理工具箱的功能你的代码使用并只包括那些在编译。由于你具体要求, 这个新闻组螺纹 提到如何包括一个.墨西哥文件:

mcc ... -a imreconstructmex.mexw32  %# For a 32-bit Windows mex file


注: 还有一个 嵌入错误报告 我遇到了(你需要一个登录查看),提到的一个问题汇编应用中使用的一些图像处理工具箱功能上的Windows在R2009b.有一个解决办法给予上述的链接。这个缺陷是固定的R2010a.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top