bei mir sieht des nu so aus, aber da is nochn fehler den ich nicht finde
(Zeile vor 'Print("HALLO!");' Bezeichnerfehler)
die Print(char* pc)-Funktion funktioneirt!
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
/* IN DER DLL
#include <windows.h>
#include <stdio.h>
extern "C"
{
__declspec(dllexport) void Print(char* pc)
{
printf("%s\n",pc);
};
class CLASS
{
};
class CLASS_A : public CLASS
{
public:
int i;
};
__declspec(dllexport) CLASS* CreateNewClass()
{
return new CLASS_A;
};
}
--------------------------------------------------------------------------
*/
// in der exe-datei
#include <windows.h>
class CLASS
{
};
HMODULE hDLL = NULL;
void (__stdcall* pPrint)(char*) = NULL;
CLASS* (__stdcall* pCreateNewClass)() = NULL;
void main()
{
hDLL = LoadLibrary("dll.dll");
if(hDLL==NULL) MessageBox(0,"hDLL","Fehler!",MB_OK);
pPrint = (void(__stdcall*)(char*))GetProcAddress(hDLL,"Print");
if(pPrint==NULL) MessageBox(0,"pPrint","Fehler!",MB_OK);
pCreateNewClass = (CLASS*(__stdcall*)())GetProcAddress(hDLL,"CreateNewClass");
if(pCreateNewClass==NULL) MessageBox(0,"pCreateNewClass","Fehler!",MB_OK);
CLASS* C = new pCreateNewClass();
pPrint("HALLO!");
FreeLibrary(hDLL);
};
|