无法在MATLAB中加载库

时间:2013-01-22 06:53:57

标签: matlab visual-c++ dll

我在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 ++编写的简单程序。我该如何解决这个问题?

1 个答案:

答案 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

最后它奏效了。