I am trying to build a dll with visual studio so I can use it in matlab ...
I tried thausand codes with no solution !!! I am working on matlab 2013(32and64) and VS2010 !
I tried for example to write the code this way ...
//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 Build it and make th dll file but matlab always doesn't see the function ...
What should I do /* I am really stucked :( */
Thanks in advance ...
Example: Take the following files, and build a DLL in Visual Studio.
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);
}
Copy the generated simple.dll
and the header files simple.h
and helper.h
in the current directory. Then in 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
Note: If you are running MATLAB 64-bit, you must build the DLL as such. The rule is that you cannot load a 32-bit library in a 64-bit process.