Arrest
12-11-2008, 21:09
Пытаюсь подключить DLL такого вида:
#include "main.h"
#include <windows.h>
#include <stdio.h>
// [skipped]
BOOL __declspec(dllexport) init(){
MessageBoxA(0, "Hello!", "DLL activated", 64);
}
BOOL __declspec(dllexport) deinit(){
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;
}
К такому коду:
#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
#include "main.h"
#include <windows.h>
#include <stdio.h>
// [skipped]
BOOL __declspec(dllexport) init(){
MessageBoxA(0, "Hello!", "DLL activated", 64);
}
BOOL __declspec(dllexport) deinit(){
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;
}
К такому коду:
#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