我目前正面临着Matlab显然很愚蠢的问题,但我无法弄清楚出了什么问题(或者更好,我认为这是错误的,但我被告知它应该有效)。
我有一个Matlab脚本,“myscript.m”需要使用C编程的函数“myfunc.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中加载库。
我的问题是,鉴于目前的描述,这次执行是否可行?有没有什么方法可以让它发挥作用,或者是我缺少的东西?一种可能性是这是一种旧的包装器格式,目前它不再起作用了。
如果有人知道或有任何建议,我们将不胜感激。感谢!!!
雨果
答案 0 :(得分:0)
听起来像myfunc.c是一个mex文件。尝试使用mex
命令在Matlab中编译它。 dll
扩展名可能是旧版本的matlab。
答案 1 :(得分:0)
你试过loadlibrary
吗?你需要一个.h文件,但如果你知道函数的原型,它就很容易重新创建。