我在Visual C ++ 2008 SP1中编写了一个非常简单的程序。 它只是加起来两个数字。 DLLTest.cpp是:
#include "DllTest.h"
__declspec(dllexport) double Add(double a, double b)
{
return( a + b );
}
DllTest.h是:
#ifndef _DLL_TEST_H_
#define _DLL_TEST_H_
#endif
__declspec(dllexport) double Add( double, double);
我使用Visual C ++ 2008构建DLL。当我尝试使用loadlibrary
加载库时,出现以下错误:
???使用==>时出错422 Building DllTest_thunk_pcwin64的loadlibrary失败。编译器输出是: DllTest_thunk_pcwin64.c C:\ Users \ Admin \ Desktop \ DllTest.h(5):错误 C2054:预期'('跟随'EXPORTED_FUNCTION' C:\ Users \ Admin \ Desktop \ DllTest.h(5):错误C2085:'添加':不在 形式参数列表DllTest_thunk_pcwin64.c(40):错误C2085: 'int8':不在形式参数列表中DllTest_thunk_pcwin64.c(41): 错误C2085:'uint8':不在正式参数列表中 DllTest_thunk_pcwin64.c(42):错误C2085:'int16':不正式 参数列表DllTest_thunk_pcwin64.c(43):错误C2085:'uint16': 不在形式参数列表中DllTest_thunk_pcwin64.c(44):错误 C2085:'int32':不在正式参数列表中 DllTest_thunk_pcwin64.c(45):错误C2085:'uint32':不正式 参数列表DllTest_thunk_pcwin64.c(46):错误C2085:'int64': 不在形式参数列表中DllTest_thunk_pcwin64.c(47):错误 C2085:'uint64':不在正式参数列表中 DllTest_thunk_pcwin64.c(48):错误C2085:'voidPtr':不正式 参数列表DllTest_thunk_pcwin64.c(49):错误C2085:'string': 不在形式参数列表中DllTest_thunk_pcwin64.c(51):错误 C2082:重新定义形式参数'EXPORTED_FUNCTION' DllTest_thunk_pcwin64.c(51):错误C2143:语法错误:缺少';' 在'type'之前DllTest_thunk_pcwin64.c(52):错误C2085: 'EXPORTED_FUNCTIONdoubledoubledoubleThunk':不在形式参数中 list DllTest_thunk_pcwin64.c(52):错误C2143:语法错误:缺失 ';'在'{'
之前
我想在MATLAB中加载一个用Visual C ++编写的简单程序。我该如何解决这个问题?
答案 0 :(得分:1)
感谢您考虑我的问题。 我发现了这个问题。实际上,有两个问题: 1)MATLAB是64位但是我制作了32位DLL,我不得不在Visual Studio中更改设置以生成64位DLL。 2)似乎MATLAB用于加载DLL的编译器,有'extern“C”'命令的问题。所以,我改变了这样的标题:
#ifndef DllTest_h
#define DllTest_h
#include <stdio.h>
#ifdef __cplusplus
extern "C" {
#endif
__declspec(dllexport) double Add( double, double);
#ifdef __cplusplus
}
#endif
#endif
最后它奏效了。