为MATLAB编写C DLL

时间:2013-01-25 16:54:05

标签: visual-studio matlab dll

我正在尝试编写和编译一些C代码,我将使用frm MATLAB和VS 2012

这是我的头文件:

#ifndef _DLLTEST_H_
#define _DLLTEST_H_

#include <iostream>
#include <stdio.h>
#include <windows.h>

extern "C" __declspec(dllexport) int Add(int a, int b);


#endif

这是实施:

#include "stdafx.h"
#include "nureader.h"

extern "C" __declspec(dllexport) int Add(int a, int b)
{
  return (a + b);
}

编译很顺利,但是当我尝试将DLL加载到MATLAB时,我收到一个奇怪的错误:

>> [a,b] = loadlibrary('nureader.dll', 'nureader.h')
Error using loadlibrary (line 419)
Failed to preprocess the input file.
Output from preprocessor is:nureader.h
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\eh.h(27) : fatal error C1189: #error :  "eh.h
is only for C++!"

1 个答案:

答案 0 :(得分:2)

看看VS输出

fatal error C1189: #error : "eh.h is only for C++!" 

你想写一个C库,对吗?所以不要在其中包含C ++。或者使用G ++进行编译,但由于你使用的是Windows,我认为你没有这个选择......

在任何情况下,追踪包含“eh.h”的内容并尝试不使用它。如果它没有它构建 - 很好,如果不是 - 你将只需要隔离程序的C部分。通过查看代码,您似乎不需要任何其他内容

#include <stdio.h>
#include <windows.h>

所以试试吧。