我正在尝试编写和编译一些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++!"
答案 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>
所以试试吧。