N
nush
Дорогие добрые волшебники программисты,
подскажите плз как сделать
У меня есть libmatrixp.dll, но не могу вызывать из нее нужную функцию.
Видимо что то не так к прототипом.
В проекте пишу
#include "libmatrixp.h"
#include <windows.h>
#include "mclcppclass.h"
typedef void (* cfunc)(int nargout, mwArray& A, mwArray& B, const mwArray& filename1, const mwArray& filename2);
int _tmain(int argc, _TCHAR* argv[])
{
cfunc TestFunc;
HINSTANCE hLib = LoadLibrary("libmatrixp.dll");
const char* str1[] = {"2mcm.pdb"};
const char* str2[] = {"2AYH.pdb"};
const mwArray in1(1,str1);
const mwArray in2(1,str2);
mwArray outA;
mwArray outB;
if (hLib != NULL)
{
TestFunc = (cfunc)GetProcAddress(hLib,"?mainpart@@YAXHAAVmwArray@@0ABV1@1@Z");
if (NULL != TestFunc)
{
(TestFunc)(2, outA, outB, in1, in2); ??????!!!!!!! сдесь выдается ошибка
//int f =out.out2.NumberOfElements();
// std::cout <<f << std::endl;
}
FreeLibrary((HMODULE)hLib);
}
}
В libmatrixp.h моя функция mainpart имеет такой прототип extern LIB_libmatrixp_CPP_API void MW_CALL_CONV mainpart(int nargout
, mwArray& A
, mwArray& matchA
, const mwArray& filename1
, const mwArray& filename2);
В проекте проделывала все возможные вариации с включение в typedef
LIB_libmatrixp_CPP_API и MW_CALL_CONV, но на строчке (TestFunc)(2, outA, outB, in1, in2); всегда выдается ошибка.
Библиотеку находит и функцию тоже(по крайней мере возвращает не null). Название ?mainpart@@YAXHAAVmwArray@@0ABV1@1@Z нашла в libmatrixp.dll.
Не могу понять где истиyа!?
подскажите плз как сделать
У меня есть libmatrixp.dll, но не могу вызывать из нее нужную функцию.
Видимо что то не так к прототипом.
В проекте пишу
#include "libmatrixp.h"
#include <windows.h>
#include "mclcppclass.h"
typedef void (* cfunc)(int nargout, mwArray& A, mwArray& B, const mwArray& filename1, const mwArray& filename2);
int _tmain(int argc, _TCHAR* argv[])
{
cfunc TestFunc;
HINSTANCE hLib = LoadLibrary("libmatrixp.dll");
const char* str1[] = {"2mcm.pdb"};
const char* str2[] = {"2AYH.pdb"};
const mwArray in1(1,str1);
const mwArray in2(1,str2);
mwArray outA;
mwArray outB;
if (hLib != NULL)
{
TestFunc = (cfunc)GetProcAddress(hLib,"?mainpart@@YAXHAAVmwArray@@0ABV1@1@Z");
if (NULL != TestFunc)
{
(TestFunc)(2, outA, outB, in1, in2); ??????!!!!!!! сдесь выдается ошибка
//int f =out.out2.NumberOfElements();
// std::cout <<f << std::endl;
}
FreeLibrary((HMODULE)hLib);
}
}
В libmatrixp.h моя функция mainpart имеет такой прототип extern LIB_libmatrixp_CPP_API void MW_CALL_CONV mainpart(int nargout
, mwArray& A
, mwArray& matchA
, const mwArray& filename1
, const mwArray& filename2);
В проекте проделывала все возможные вариации с включение в typedef
LIB_libmatrixp_CPP_API и MW_CALL_CONV, но на строчке (TestFunc)(2, outA, outB, in1, in2); всегда выдается ошибка.
Библиотеку находит и функцию тоже(по крайней мере возвращает не null). Название ?mainpart@@YAXHAAVmwArray@@0ABV1@1@Z нашла в libmatrixp.dll.
Не могу понять где истиyа!?