将 MATLAB 连接到 C 语言 DLL
connecting matlab to c language dll
我正在尝试在 Matlab 中使用 clllib 函数.dll我将文件和 .h 文件放在与正在开发的 .m MATLAB 文件相同的目录中,之后我尝试使用加载库函数 bui 它有一些警告
警告:
Warning:
Message from C preprocessor:
lcc preprocessor error: C:UsersMAHNAZDocumentsMATLABT1Header.h:1 Could not find include file
<iostream>
lcc preprocessor warning: C:UsersMAHNAZDocumentsMATLABT1Header.h:21 EOF inside comment
> In loadlibrary at 351
Warning: The function 'Add' was not found in the library
> In loadlibrary at 435
Warning: The function 'Function' was not found in the library
> In loadlibrary at 435
当我想像这样使用calllib
函数时: calllib('t1', 'Add', 2,3)
Matlab 给了我一个错误:
??? Error using ==> calllib Method was not found.
我的头文件是:
#ifndef T1_HEADER_H
#define T1_HEADER_H
extern int Add( int a, int b );
extern void Function( void );
#endif
我的源文件是:
#include iostream
#include "T1Header.h"
extern int Add( int a, int b )
{
return( a + b );
}
extern void Function( void )
{
std::cout << "DLL Called!" << std::endl;
}
我使用 visual c++ 2010 和 Matlab 7.6.0(R2008a)
关于出了什么问题,我可以做些什么来修复此错误,或者我可以尝试从 MATLAB 中调用此.dll的任何建议?
前面的一些注释和评论:
- 加载iostream的错误听起来有点像代码被处理为C而不是C++。
- 您粘贴的源文件的名称周围没有尖括号
iostream
,但我想当你写这篇文章时它们已经丢失了。 - 定义函数时不应
extern
函数。 - 您粘贴的错误消息提到了粘贴中未包含的评论。
- 我有点惊讶 matlab 甚至会查看标头,我会假设它只使用 DLL 文件。
但是这个问题的主要原因,假设DLL文件最终被创建,应该是这样的:Matlab可能希望使用C调用约定,所以你应该在头和实现中将你的函数括在extern "C" { … }
块中。
相关文章:
- 挂起和取消挂起一个文件DLL
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 导入库可以跨dll版本工作吗
- 从C++dll访问C#中的一行主要参数
- 链接到自行创建的dll失败
- 为什么使用 P/Invoke 调用 dll 时,某些计算机中的 LoadLibrary 失败?
- MFC C++语言资源DLL-仅覆盖某些对话框
- 从其他编程语言调用 c++ dll 类函数
- 使用我自己的 C++/CLI DLL 的 C#:错误:语言不支持'mytrainOp'
- 将 MATLAB 连接到 C 语言 DLL
- 为不同的语言和平台创建C++DLL
- 在 dll 边界上公开 std::vector语言 - 编译器独立性的最佳实践
- r语言 - 在 Windows 上使用 Rcpp 创建.dll文件并编译C++代码
- 使用公共语言运行时支持(/clr)调用mfc dll时,未能运行mfc应用程序
- 如果没有可用的C++编译器,C语言可以调用用C++编写的DLL吗
- 正在创建将在另一种语言上调用的win32api(dll)
- DLL可以与其他编程语言一起使用吗?
- 如何在C语言中以函数作为参数调用Fortran dll
- C- wrapper DLL在自定义语言中的性能
- 哪些脚本语言在msxml4.dll xsl转换中可用