【发布时间】:2017-10-18 08:24:05
【问题描述】:
由于对 dll 库的了解有限,我还没有找到解决问题的方法。 我正在使用 Matlab (R2017a) 通过 dll 集成与设备的通信,该 dll 由制造商提供 (files - Xemo-DLL (64Bit) mit Header-Dateien (2.40))。
据我了解,在 VB 和 VB.NET 包装器旁边,C 中有预编译的 .dll 和 C++ 中的头文件。
问题是:将 dll 集成到 Matlab 中的最佳方法是什么?
A) 我试过 loadlibrary(XemoDll)。它抛出了很多错误,没有找到 iostream。所以我在整个文件中添加了 extern "C" {},这会在每个函数定义中产生新的错误。我必须在哪里插入它?
B) 我尝试添加 VB.NET 库的 NET.addAssembly(path\XemoDll.vb)。有一个包含所有包装函数的模块。 Matlabs 给出错误“缺少装配清单”来源:mscorlib。
【问题讨论】:
-
AFAIK 你必须为 DLL 编写一个 matlab 包装器,这可以做到,例如使用 matlab 中集成的 MEX 编译器。它将 c/C++ 代码编译成可以在 matlab 中使用的函数
-
loadlibrary 本身只支持可以被 c 编译器解析的头文件。 iostream 是 c++ 而不是 c 所以这不能直接工作。编写一个导出纯 c 接口的包装 dll