Links
AUM Magazine
Newest Posts
Fackel effect Problem.
by White_Wolf
22 minutes 3 seconds ago
variadic functions
by jcl
Today at 14:22
Ineria
by TheLiam
Today at 14:20
Mesh question
by Logitek
Today at 13:57
how to save the structures with add_struct ?
by Helghast
Today at 13:18
Latest Screens
Overlay Window Project
Marble Ball Dash
Sea
Gravix
Secret Of The Sword - Castle Rooms
Who's Online
55 registered (Chasarsis, ChrisB, chris_oat, 3dgs_snake, achaziel, Damocles_, checkbutton, Benni003, ChdcChris, aaronkaminer, 6 invisible), 139 Guests and 18 Spiders online.
Key: Admin, Global Mod, Mod
Newest Members
GMaSG, Galion, BlueFlame, getyoursnackon, komody
14940 Registered Users
Topic Options
Rate This Topic
#279685 - 07/18/09 20:24 Dll problem
Vampir Offline
Member

Registered: 06/03/04
Posts: 134
Loc: 127.0.0.1
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:
Code:
//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;
}



Code:
//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:

Code:
#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


Edited by Vampir (07/18/09 21:43)
_________________________
My english is version 0.1 BETA

Top
#309272 - 02/08/10 10:56 Re: Dll problem [Re: Vampir]
frankjiang Offline
Newbie

Registered: 12/29/09
Posts: 40
Loc: China
could tell me why i just call dll by c-script ,but not by lite-c?

Top


Moderator:  TWO 

lite-c | chip programmers | download | shop | resources | magazine | manual | support faq | wiki | bugs | beta features | forecast

Conitec Datasystems, Inc · 5000 Thorne Drive, Suite F · La Mesa, CA 91941 · Tel +1 (619) 462-0515 · Fax +1 (619) 462-0519 · info (at) 3dgamestudio.net