Импорт функций из Dll

Тема в разделе "MS Visual C++", создана пользователем lifer, 9 ноя 2006.

  1. lifer

    lifer Гость

    Я не особенно прошарен в длл, и у меня возникла проблема. В длл у меня есть функция, скажем, такая:

    extern "C" __declspec(dllexport) bool Test(int a) {Beep(300,300);return true;}
    Длл загружается динамически.
    extern "C" я добавляю затем, чтобы не было искажения имени и можно было импортировать эту ф-цию в своей проге с помощью GetProcAddress.
    Ну и при ее вызове я получаю следующее:The value of ESP was not properly saved across a funtion call и всякая лабуда насчет различия декларации ф-ции в длл и указателя на нее в программе.
    В программе импорт выглядит так:

    typedef bool (WINAPI* TEST)(int);
    TEST Test;
    Test=(Test)GetProcAddress(dll,"Test");
    bool t=Test(4);

    Причем функция выполняется, ошибка при выходе из фукции и связана с параметрами и стеком. Если сделать ф-цию без параметров, то все отлично.Calling convention в настройках длл и проги __cdecl. Если убрать extern "C" и поставить везде __fastcall или __stdcall, то вообще ничего не работает. Длл создается в CPP коде - для информации.
    Подскажите пожалуйста, как решить проблему.
     
  2. Kmet

    Kmet Well-Known Member

    Регистрация:
    25 май 2006
    Сообщения:
    1.017
    Симпатии:
    1
    typedef bool (WINAPI* TEST)(int);

    смотрел как обьявлен макрос WINAPI?
     
  3. lifer

    lifer Гость

    Ага, спасибо за подсказку. Вместо WINAPI написал __cdecl как в настройках длл, все заработало.
     
Загрузка...
Похожие Темы - Импорт функций из
  1. ToxaRat
    Ответов:
    11
    Просмотров:
    620
  2. magistr
    Ответов:
    25
    Просмотров:
    1.745
  3. Lia
    Ответов:
    15
    Просмотров:
    1.078
  4. ty3uk
    Ответов:
    16
    Просмотров:
    1.945
  5. Ali002
    Ответов:
    0
    Просмотров:
    1.109

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