我正在尝试使用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始终看不到该函数... 我该怎么办/ *我真的被困了:( * / 提前谢谢......
答案 0 :(得分:2)
示例:获取以下文件,并在Visual Studio中构建DLL。
#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
#ifndef SIMPLEH_H
#define SIMPLEH_H
#include "helper.h"
#ifdef __cplusplus
extern "C" {
#endif
EXPORTED_FUNCTION int sq(int x);
#ifdef __cplusplus
}
#endif
#endif
#define EXPORT_FCNS
#include "helper.h"
#include "simple.h"
int sq(int x)
{
return (x*x);
}
将生成的simple.dll
和头文件simple.h
和helper.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位库。