использование своей .dll

  • Автор темы nush
  • Дата начала
Статус
Закрыто для дальнейших ответов.
N

nush

Гость
#1
Есть libmatrixp.dll, но не могу вызывать из нее нужную функцию.
Видимо что то не так к прототипом.

В проекте пишу

#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#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);
}
char r;
std::cin >> r;
return 0;
}

В 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); всегда выдается ошибка.
Библиотеку находит и функцию тоже. Название ?mainpart@@YAXHAAVmwArray@@0ABV1@1@Z нашла в libmatrixp.dll.


Не могу понять где истика!?
 
Статус
Закрыто для дальнейших ответов.