0

VS2012でfrmMATLABを使用するCコードを記述してコンパイルしようとしています。

これが私のヘッダーファイルです:

#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++!"
4

1 に答える 1

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>

だからそれを試してください。

于 2013-01-25T17:17:35.973 に答える