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

Тема в разделе "MS Visual C++", создана пользователем nush, 30 янв 2007.

Статус темы:
Закрыта.
  1. nush

    nush Гость

    Есть 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.


    Не могу понять где истика!?
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей