c - Matlab 的 C 包装器有问题

标签 c matlab dll wrapper

我目前正面临一个明显愚蠢的 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 中加载库。

我的问题是,根据当前的描述,这种执行是否可行?有什么方法可以让它工作,或者我缺少什么?一种可能是这是一种旧的包装格式,目前不再适用。

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

雨果

最佳答案

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

关于c - Matlab 的 C 包装器有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13679158/

相关文章:

c - 为什么我们需要 list_for_each_safe() 来删除内核链表中的节点?

matlab - 如何格式化从 MATLAB 中的串口读取的数据?

c# - 将 C++ .exe 项目转换为 dll

c - 眨眼草图我不清楚

c - 快速位连接反转参数之一

c++ - 从 Matlab 转换为 C++

c++ - hell 图书馆(又名 DLL hell )

dll - 在我的 C# 解决方案中,解耦架构中的接口(interface)应存储在哪里?

c++ - 函数的隐式声明可以在 gcc 中编译,但不能在 g++ 中编译

matlab - 使用 matlab 将 RGB 图像转换为灰度图像并重命名