Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Win32 API - [решено] Не работает GetProcAddress

Ответить
Настройки темы
Win32 API - [решено] Не работает GetProcAddress

Аватара для Arrest

runs with scissors


Сообщения: 642
Благодарности: 77

Профиль | Отправить PM | Цитировать


Пытаюсь подключить DLL такого вида:
PHP код: Выделить весь код

#include "main.h"

#include <windows.h>
#include <stdio.h>

// [skipped]

BOOL __declspec(dllexportinit(){
     
MessageBoxA(0"Hello!""DLL activated"64);
}

BOOL __declspec(dllexportdeinit(){
     
MessageBoxA(0"Bye!""DLL disactivated"64);
}


BOOL APIENTRY DllMain (HINSTANCE hInst     /* Library instance handle. */ ,
                       
DWORD reason        /* Reason this function is being called. */ ,
                       
LPVOID reserved     /* Not used. */ )
{
    switch (
reason)
    {
      case 
DLL_PROCESS_ATTACH:
        break;

      case 
DLL_PROCESS_DETACH:
        break;

      case 
DLL_THREAD_ATTACH:
        break;

      case 
DLL_THREAD_DETACH:
        break;
    }

    
/* Returns TRUE on success, FALSE on failure */
    
return TRUE;


К такому коду:
PHP код: Выделить весь код

#include <windows.h>


typedef BOOL (CALLBACK *inshook)(); 

int WINAPI WinMain (HINSTANCE hThisInstance,
                    
HINSTANCE hPrevInstance,
                    
LPSTR lpszArgument,
                    
int nFunsterStil)

{
    
HMODULE DllInstance;
    
inshook init
    
DllInstance LoadLibrary("hooklib.dll");
    if(
DllInstance == NULL){
        
MessageBoxA(0"Failed to run DLL""Error"16);
        
ExitProcess(0);
    }
    
init = (inshook)GetProcAddress(DllInstance"installhook");
    if(
init == NULL){
        
MessageBoxA(0"Failed to determine DLL function adress""Error"16);
    }else{
        
init();
    }
    
FreeLibrary(DllInstance);
    
ExitProcess(0);


Не работает. GetProcAddress отдает нулевой указатель. Что надо пофиксить?

P.S. Dev-C++, mingw

-------
- Why do you call this version of software 'beta'?
- Coz it's beta than nothing.


Отправлено: 21:09, 12-11-2008

 

Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Цитата Arrest:
switch (reason)
{
case DLL_PROCESS_ATTACH:
break;
case DLL_PROCESS_DETACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
} »
а default в конце switch не нужен?

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 01:04, 13-11-2008 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Arrest

runs with scissors


Сообщения: 642
Благодарности: 77

Профиль | Отправить PM | Цитировать


Delirium, без него тоже все работает функция DLLMain является опциональной вообще, если смотреть на MSDN

Проблема решена: если точно экспортная функция никак не находится GetProcAddress'ом, то стоит посмотреть Dependency Walker'ом ее имя, которое сделал компилятор. В моем случае было что-то вроде _Z4installhook.

-------
- Why do you call this version of software 'beta'?
- Coz it's beta than nothing.


Отправлено: 15:21, 13-11-2008 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Win32 API - [решено] Не работает GetProcAddress

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] не работает клавиатура (в биосе работает, при загрузке нет) AlhimikRu Непонятные проблемы с Железом 11 24-10-2013 05:10
[решено] bat-файл работает... и он же не работает. В чем дело? truvo Хочу все знать 10 26-03-2009 02:36
HDD - HDD работает на одном компе и не работает на другом FMT Накопители (SSD, HDD, USB Flash) 2 25-11-2008 06:51
Прозрачность фона картинки. Работает в Opera, не работает Internet Explorer 6 Voxell Вебмастеру 10 11-11-2008 13:49
Некоторый софт не работает с 512 Мб, а работает только с 256 ACrimson Непонятные проблемы с Железом 12 02-10-2004 20:30




 
Переход