MEX -- unable to open external API
이전 댓글 표시
Hello *,
My question is related to a MATLAB/HyperMesh interaction by making use of the C/C++ interface provided with HyperMesh 11 -- referred to as Ext API. The problem is that I cannot open an interface. Here is a sample code which can reproduce the problem:
#include <mex.h>
#include "C:\Program Files\Altair\11.0\hm\include\hm_extapi.h"
#include "C:\Program Files\Altair\11.0\hm\include\hm_extapi_error.h"
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
mexPrintf("Halli Hallo..\n");
int err_code;
HM_ExtAPI* hm_api = Open_HM_ExtAPI (&err_code);
mexPrintf("Err Code Number: %d\n", err_code);
if (err_code != ERR_XAPI_SUCCESS)
{
char buffer[512];
if (Open_HM_ExtAPI_GetErrorMessage (err_code, buffer, 512))
mexPrintf("MESSAGE: %s\n", buffer);
}
mexPrintf("Wie geths?\n");
mexPrintf("%s\n", hm_api);
Close_HM_ExtAPI(hm_api);
mexPrintf("Tschüss!\n");
return;
}
I copied the corresponding .dll file
hm_extapi.dll
to the MATLAB runtime directory path. Then I simply use this command to generate the MEX executable:
mex E:\WAP09Celsius1_Lucian\code\schnittstelle.cpp C:\Programme\Altair\11.0\hm\lib\win64\hm_extapi.lib
And by running the command:
schnittstelle
I get the following output:
Halli Hallo..
Err Code Number: 1
MESSAGE: HM DLL not found.
Wie geths?
(null)
Tschüss!
Any suggestion on how to solve it will be appreciated.
Cheers, Lucian. --
댓글 수: 4
Friedrich
2013년 4월 18일
Does it work when you call the same code from a plain C/C++ application? Doesn't seem to be a mex problem to me.
Lucian Goron
2013년 4월 18일
Friedrich
2013년 4월 18일
Delayload dependencies. A static analysis wont tell you whats wrong here. You need to do a runtime profile of the matlab.exe which calls the mex to get the correct information.
Lucian Goron
2013년 4월 18일
답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Write C Functions Callable from MATLAB (MEX Files)에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!