2

我正在尝试使用 Visual Studio 构建一个 dll,以便可以在 matlab 中使用它......我尝试了 thausand 代码但没有解决方案!我正在研究 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 构建它并制作 th dll 文件,但 matlab 总是看不到该功能......我该怎么办 /* 我真的被卡住了 :( */ 提前致谢......

4

1 回答 1

2

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

助手.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

简单的.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

简单的.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

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

于 2013-08-24T17:57:46.063 回答