visual studio Dll和Matlab

时间:2013-08-23 23:02:31

标签: c++ visual-studio-2010 matlab dll loadlibrary

我正在尝试使用visual studio构建一个dll,以便我可以在matlab中使用它... 我试过没有解决方案的thaus和代码!我正在研究matlab 2013(32and64)和VS2010! 我试着以这种方式编写代码......

        //The header

    #ifndef SIMPLEH_H
    #define SIMPLEH_H
    #ifdef  __cplusplus
    extern "C" {
    int sq(int x);  
    #endif
    #ifdef  __cplusplus
    }
    #endif
    #endif

//the Func(example)

#include "SimpleH.h"
int sq(int x)
{
return (x*x);
}

visual studio构建它并生成dll文件,但matlab始终看不到该函数... 我该怎么办/ *我真的被困了:( * / 提前谢谢......

1 个答案:

答案 0 :(得分:2)

示例:获取以下文件,并在Visual Studio中构建DLL。

helper.h

#ifndef HELPER_H
#define HELPER_H

#ifdef _WIN32
#ifdef EXPORT_FCNS
#define EXPORTED_FUNCTION __declspec(dllexport)
#else
#define EXPORTED_FUNCTION __declspec(dllimport)
#endif
#else
#define EXPORTED_FUNCTION
#endif

#endif

simple.h

#ifndef SIMPLEH_H
#define SIMPLEH_H

#include "helper.h"

#ifdef  __cplusplus
extern "C" {
#endif

EXPORTED_FUNCTION int sq(int x);

#ifdef  __cplusplus
}
#endif

#endif

simple.cpp

#define EXPORT_FCNS
#include "helper.h"
#include "simple.h"

int sq(int x)
{
    return (x*x);
}

将生成的simple.dll和头文件simple.hhelper.h复制到当前目录中。然后在MATLAB中:

>> loadlibrary('./simple.dll', './simple.h')

>> libisloaded simple
ans =
     1

>> libfunctions simple -full
Functions in library simple:

int32 sq(int32)

>> calllib('simple', 'sq',3)
ans =
     9

注意:如果您运行的是MATLAB 64位,则必须按原样构建DLL。规则是您无法在64位进程中加载​​32位库。