Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Access violation при подключении dll

1.1K
05 февраля 2007 года
teran
73 / / 15.04.2003
Есть dll написанная на Visual studio 2005 (C++), появилась необходимость подключить ее к проекту на билдере. При вызове функции из этой dll (вернее не при самом вызове, а при выходе из функции, которая этот вызов делает) выскакивает access violation. Причем это происходит только в release версии проекта, если нажат Full Debug все работает нормально. В поисках ошибки урезал код dll до такого вот

Код:
#include "stdafx.h"
extern "C" BOOL __declspec(dllexport) StartLog(int w_id);
extern "C" BOOL __declspec(dllexport) StopLog();

HINSTANCE hLib;

BOOL APIENTRY DllMain( HMODULE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
{
    return TRUE;
}

BOOL StartLog(int w_id)
{
    return TRUE;
}

BOOL StopLog()
{
    return TRUE;
}


код вызова функции:

Код:
void __fastcall TFormMain::ButtonDoClick(TObject *Sender)
{
    bool isOk = false;
    bool (__stdcall *StartLog)(int);
    dllp = LoadLibrary("msqld.dll");

    if(!dllp)
        return;

    StartLog = (bool(__stdcall *)(int))GetProcAddress(dllp, "StartLog");
    if(StartLog)
        isOk = StartLog(some_int);
}


так вот он вызывает StartLog, но при выходе из ButtonDoClick выскакивает ошибка, никак не могу понять почему
391
05 февраля 2007 года
Archie
562 / / 03.02.2005
Может быть проблема с вызовом. У тебя в dll-ке экспорт функций описан как cdecl (по-умолчанию), а загружаешь ты их как stdcall.
1.1K
05 февраля 2007 года
teran
73 / / 15.04.2003
Цитата: Archie
Может быть проблема с вызовом. У тебя в dll-ке экспорт функций описан как cdecl (по-умолчанию), а загружаешь ты их как stdcall.



помогло, огромное спасибо!

309
06 февраля 2007 года
el scorpio
1.1K / / 19.09.2006
А чтобы такого происходило реже, нужно использовать указатель на функцию.
Ксати, и код в этом случае получится куда читабельнее
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог