1

我目前在使用 Matlab 时遇到了一个明显愚蠢的问题,但我就是不知道出了什么问题(或者更好的是,我认为这是错误的,但有人告诉我它应该可以工作)。

我有一个 Matlab 脚本“myscript.m”,它需要使用 C 编程函数“myfunc.c”,它又在库“mylib.dll”中编译(或“生活”)。为了让“myscript.m”访问和执行“myfunc.c”,还有一个“myfunc.m”Matlab 脚本,它在“myscript.m”中被调用。然而,“myfunc.m”是一个完全空的文件,除了一些注释(也没有特定的格式或模式)。所有这些文件都给了我,我被告知,Matlab 应该正确执行“myfunc.c”,因为“myfunc.m”充当包装器。

我遇到的问题是它当然不起作用。当我执行“myscript.m”中的行时:

output1 = myfunc(input1, input2);

我收到 Matlab 错误,说我正在尝试将脚本作为函数执行。在我看来,这是正确的,因为我将输入和请求输出发送到声明两者都没有的东西,因为“myfunc.m”是空的(注释除外,它们不是代码)。

我认为 Matlab 无法(按原样)知道我想访问“mylib.dll”中的 C 代码。我也没有头文件“mylib.h”,因此我可以使用 loadlibrary 在 Matlab 中加载库。

我的问题是,鉴于目前的描述,这种执行是否可行?有什么方法可以让它工作,或者我错过了什么?一种可能性是这是一种旧的包装格式,它目前不再起作用。

如果有人知道任何事情或有建议,他们将不胜感激。谢谢!!!

雨果

4

2 回答 2

0

听起来 myfunc.c 是一个 mex 文件。尝试使用mex命令在 Matlab 中编译它。dll扩展可能是旧版本的matlab。

于 2012-12-03T15:07:50.250 回答
0

你试过loadlibrary吗?您需要一个 .h 文件,但如果您知道函数的原型,则很容易重新创建。

于 2012-12-03T21:32:04.663 回答