0

我正在尝试在 matlab 中使用 clllib 函数我将 .dll 文件和 .h 文件放在与正在开发的 .m MATLAB 文件相同的目录中,之后我尝试使用 loadlibrary 函数 bui 它有一些警告

警告:

Warning: 
Message from C preprocessor:

lcc preprocessor error: C:\Users\MAHNAZ\Documents\MATLAB\T1Header.h:1 Could not find include file
<iostream>

lcc preprocessor warning: C:\Users\MAHNAZ\Documents\MATLAB\T1Header.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 吗?

4

1 回答 1

0

前面的一些注释和评论:

  • 加载 iostream 的错误听起来有点像代码被处理为 C 而不是 C++。
  • 您粘贴的源文件名称周围没有尖括号iostream,但我猜他们在您写这篇文章时丢失了。
  • extern当您定义它们时,这些功能不应该是。
  • 您粘贴的错误消息提到了未包含在您的粘贴中的评论。
  • 我对 matlab 甚至查看标题感到有点惊讶,我会假设它只使用 DLL 文件。

但是这个问题的主要原因,假设最终创建了 DLL 文件,应该是这样的:Matlab 可能会想要使用C 调用约定,所以你应该extern "C" { … }在头文件和实现中将你的函数包含在块中。

于 2012-08-07T12:24:13.793 回答