Extern (C++)

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

 

Mr Hopp

Betreff: Extern (C++)

BeitragMi, Jan 09, 2008 17:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!

Ich habe starke Probleme damit, eine C++ Datei einzubinden.

Code: [AUSKLAPPEN]
#ifndef md5_INCLUDED
#  define md5_INCLUDED

/*
 * This package supports both compile-time and run-time determination of CPU
 * byte order.  If ARCH_IS_BIG_ENDIAN is defined as 0, the code will be
 * compiled to run only on little-endian CPUs; if ARCH_IS_BIG_ENDIAN is
 * defined as non-zero, the code will be compiled to run only on big-endian
 * CPUs; if ARCH_IS_BIG_ENDIAN is not defined, the code will be compiled to
 * run on either big- or little-endian CPUs, but will run slightly less
 * efficiently on either one than if ARCH_IS_BIG_ENDIAN is defined.
 */

typedef unsigned char md5_byte_t; /* 8-bit byte */
typedef unsigned int md5_word_t; /* 32-bit word */

/* Define the state of the MD5 Algorithm. */
typedef struct md5_state_s {
    md5_word_t count[2];   /* message length in bits, lsw first */
    md5_word_t abcd[4];      /* digest buffer */
    md5_byte_t buf[64];      /* accumulate block */
} md5_state_t;

#ifdef __cplusplus
extern "C"
{
#endif

/* Initialize the algorithm. */
void md5_init(md5_state_t *pms);

/* Append a string to the message. */
void md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes);

/* Finish the message and return the digest. */
void md5_finish(md5_state_t *pms, md5_byte_t digest[16]);

#ifdef __cplusplus
}  /* end extern "C" */
#endif

#endif /* md5_INCLUDED */


Wie soll man das nun in BMX einbinden? Derzeitiges Hauptproblem ist, dass diese Datei komischerweiße schon vor dem Initialisieren eine Instanz (md5_state_t) haben möchte... scheinbar kann man in BMX keine extern deklarierten Types erstellen?
Zitat:
Wie poste ich falsch?

Nachdem ich Google, die FAQ's und die Boardsuche erfolgreich ignoriert habe, erstelle ich zwei bis fünf neue Themen, in den falschen Unterforen, mit kreativen Titeln und undeutlichem Text, unter dem sich jeder etwas anderes vorstellen kann.
 

ChristianK

BeitragMi, Jan 09, 2008 17:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit einer C++ Funktion.

Code: [AUSKLAPPEN]
TType* CreateTType( )
{
   return new TType;
}

Und nicht vergessen, das Objekt wieder zu löschen. Das wird bei externen Types nicht vom GC übernommen.

Code: [AUSKLAPPEN]
void DeleteTType( TType* type )
{
   delete type;
}

Wenn du noch mehr darüber wissen willst, schau auch mal in der Language Reference unter "Advanced topics" -> "Interfacing with C and other languages" nach.

Edit:
Wo hast du die Datei her? Die nützt dir alleine nämlich gar nix, weil das nur die Prototypen der Funktionen sind. Die eigentlichen Funktionen müssen wo anders stehen.
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT
 

Mr Hopp

BeitragMi, Jan 09, 2008 17:52
Antworten mit Zitat
Benutzer-Profile anzeigen
ja das ist nur die Header-Datei.... ich arbeite derzeitig an einem Messenger und verzweifle am Oscar-Protocol... man muss nämlich sein Passwort irgendwie in verbindung mit einem Authentication-Key und einem String bringen, um auf den Server gelassen zu werden. Diese Datei ist ein Auszug aus dem Miranda-Quellcode... Da ich es nicht verstehe, versuche ich es nun zu importieren (eigentlich wollte ich's ja übersetzen).

Hier die relevanten Dateien: http://mrhopp.redio.de/Tim/bmx/

Edit: Mir fällt auch gerade ein, dass ich schonmal einen Thread hatte, bei dem ich übersetzen wollte...
https://www.blitzforum.de/foru...highlight=

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group