Dlaczego kod biblioteki uzyskany z Borlanda kompletnie
olewa to co się zamieści w punkcie wejscia do Biblioteki .
Kompilowane Borland 5.01 .
W BCB nie sprawdzałem , bo nie zawiera (mój) dll wizard , a
zależy mi na tym aby wejście było w DllMain ,nie w jakichś
tam DLLEntryPoint czy innym g...
#ifndef __TESTBIB_H
#define __TESTBIB_H
// Funkcje zawatre w bibliotece
#ifdef __cplusplus
extern "C"{
#endif
int CALLBACK _export Funkcja_test_dll(void) ;
#ifdef __cplusplus
}
#endif
#endif
#include <windows.h>
#include "testbib.h"
char* nap_1 = " Modyfikacja w DLL_PROCESS_ATTACH " ;
char* nap_2 = " Fun " ;
int APIENTRY DllMain(HINSTANCE hInstance ,DWORD fdwReason ,PVOID pvReserved)
{
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
nap_2 = nap_1 ;
break ;
case DLL_THREAD_ATTACH:
break ;
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
int CALLBACK _export Funkcja_test_dll(void)
{
MessageBox(NULL,"Funkcja_test_dll",nap_2,MB_OK) ;
return 1 ;
}
#include <windows.h>
#include "testbib.h"
int WINAPI WinMain(HINSTANCE hInstance ,HINSTANCE hPreninstance ,
PSTR szCmdDupa , int iCmdShow )
{
Funkcja_test_dll() ;
return 0 ;
}
Tak utworzona biblioteka pozwala na wywołanie Funkcji -> Funkcja_test_dll
natomiast kod z DllMain nie jest wykonywany .Nawet przy dynamicznym ładowaniu
takiej .dll .
Biblioteka z MASM32 natomiast gładko przechodzi przez to .
Ta sama .dll kompilowana ( po zmianie składni ) w Dev-C++ zachowuje się tak
jak powinna .Czyli po wywołaniu Funkcja_test_dll() jest wyświetlany MsBox
"Modyfikacja w DLL_PROCESS_ATTACH"