Hi
Ich hab eine Netzwerk Engine für 3dgs in C# geschrieben.
Doch leider hab ich jetzt gemerkt, dass ich die nicht mit 3dgs benutzen kann, da sie auf .net basiert.
Deshalb möchte ich es so machen:
Da der Server recht gut funktioniert und ich lange daran hatte,
möchte ich jetzt einfach den Client in c++ schreiben.
Der muss ja nur mit Server verbinden, Byte-Arrays senden und empfangen, verschlüsseln, entschlüsseln und bytes in Datentypen konvertieren.
Aber leider liegt mir das dll proggen in c++ gar nicht
und habe probleme damit.
Ich hab mal eine ganz einfache dll geschrieben:
//DLL.CPP
#include "dll.h"
#include <windows.h>
DLLIMPORT void HelloWorld ()
{
MessageBox (0, "Hello World from DLL!n", "Hi", MB_ICONINFORMATION);
}
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;
}
//DLL.H
#ifndef _DLL_H_
#define _DLL_H_
#if BUILDING_DLL
# define DLLIMPORT __declspec (dllexport)
#else /* Not BUILDING_DLL */
# define DLLIMPORT __declspec (dllimport)
#endif /* Not BUILDING_DLL */
DLLIMPORT void HelloWorld (void);
#endif /* _DLL_H_ */
Und versuche sie in Lite-C zu integrieren:
#include <acknex.h>
#include <default.c>
#include <litec.h>
#include <com.h>
void MessageBox();
long h = LoadLibrary("test.dll");
MessageBox = GetProcAddress(h,"MessageBox");
void main()
{
video_mode = 12; // 1920x1200
wait(1);
while(1)
{
if(key_1)
{
while(key_1 == 1){wait(1);}
MessageBox();
}
wait(1);
}
}
Es gibt nie Fehler oder so, es passiert einfach rein gar nichts mit der testvar.
Ist es ok wenn die dll im Projektverzeichnis ist?
Die Netzwerk Engine sollte so schnell wie möglich sein.
Kann sie mit dieser Konfiguration noch schnell sein?
3dgs <-> C++ Dll Client <-> C# Server
Hoffe jemand hilft mir.
mfg
Vampir