[VC++] Allegro Lib einbinden

SFDrake1904

Cadet 3rd Year
Registriert
Apr. 2005
Beiträge
51
Hallo,

Ich hab von einer Buchcd die Visual C++ 6.0 Autoren Version auf meinem Rechner.
Läuft ganz gut nur hab ich davor ausschließlich mit allegro gearbeitet (hauptsächlich Grafiken anzeigen und so). Nun hab ich ein Programm was die geschrieben was die Allegro Lib benötigt um zu arbeiten.

Also wie kann ich Allegro bei VC++6.0 einbinden?
Danke im voraus!

(Bin noch Anfänger also bitte etwas nachsichtig sein wenn ich irgendwas falsches sag, Okay?)
 
Hallo SFDrake1904,

bei Projekteinstellungen/Linker unter Objekt/Bibliothek Module die Lib eingeben.
Ausserdem unter Extras/Optionen/verzeichnisse die Pfade auf die Include und Lib verzeichnisse eingeben.
Dann sollte Du Programme die Allegro verwenden kompilieren können.

MfG

Arnd
 
Danke! Habs schon ausprobiert und funktioniert!
 
Also hab schon wieder ein Prob.
Kompilieren ging ohne Problem (0 Fehler, 0 Warnungen)

Wenn ich aber das Programm erstellen will, bekomme ich folgenden error:
Code:
LIBCD.lib(crt0.obj) : error LNK2001: Nichtaufgeloestes Symbol _main

Habe also einen unaufgeloesten externen Verweis.

Hier mein Testprogramm:
#include <allegro.h>

int main() {
allegro_init();
allegro_message("Hello World!");
return 0;
}END_OF_MAIN()
 
Also hat jetzt keiner ne Ahnung oder hat noch keiner in den Thread gesehen?
 
Ich habe leider keine Ahnung. Bei mir sieht das ähnlich aus wenn ich ein Programm mit allegro erstellen will. Darum habe ich angefangen mich in DirectX rein zu büffeln :D

Mit allegro habe ich bisher noch nicht ein Programm zum laufen gebracht.
 
Was ist denn dieses END_OF_MAIN() für ein komisches Dingsbums?

Gehört das wirklich dort hin?
Ist das eine Funktionsdeklaration?
Was soll das sein?

Ich kann mir nicht vorstellen, dass das da hin gehört!
 
@Harrold
Hab alles so gemacht wie Arnd das gesagt hat.
Wenn ich das vergessen hab kannst du mir ja bestimmt sagen wie ich das mach, oder :confused_alt:

@Boron
END_OF_MAIN() ist eine Funktion der allegro lib. Die muss man immer wenn man mit allegro etwas programmiert setzen. Im Normalfall also ohne allegro kann man das weglassen (ist sowieso nicht in der Standard Lib deklariert).
 
Füg mal "." (ohne die Anführungszeichen) in die Liste der Pfade hinzu, in denen der Linker beim Linken nachschaut. Möglicherweise kommt das dadurch, dass du dort den Allergro-Pfad hinzugefügt hast und er jetzt die eigentlichen Objects nicht mehr finden kann.
 
Hallo SFDrake1904,

Du könntest noch prüfen ob Dein Code mit den selben Compilereinstellungen wie die Lib erstellt wurde. Wichtige Parameter sind z.B. Single oder Multithreaded.

Ausserdem sieht die Fehlermeldung danach aus das Dein Code gar nicht kompliiert wurde.
Schliesslich ist main in Deinem Code enthalten.

D.h. bau mal einen absichtlichen Fehler ein und checke ob dieser auch vom Compiler gemeldet wird.

Dann solltest Du Dein Projekt mal prüfen ob die Datei mit dem Code auch darin enthalten ist.

Was dieses END_OF_MAIN() ist wäre auch interessant. Poste doch mal die Definition (mit F12 suchen).

MfG

Arnd
 
Kompiliert wurde er anscheinend, es ist ein Binde-Problem. Der Linker findet das Object nicht, wo main definiert ist und kann somit auch keinen Einsprungspunkt erzeugen. Ich denke, dass ganz einfach der Pfad, wo die kompilierten Objects landen, jetzt in der Bindeliste fehlt.
 
Also ich hab jetzt alles ausprobiert und irgendwie funzt das immer noch nicht.
Immer wieder dieselbe Fehlermeldung.
Daher hab ich Allegro jetzt runtergeschmissen.
Trotzdem danke für die viele Hilfe.

Jetzt brauch ich nur noch eine andere Lib die sich vorallem für Spieleprogrammierung eignet.
Hat jemand ne Idee?

Ach und hier ist die END_OF_MAIN() Funktion(in der Datei alwin.h, magic main emulation):
Code:
#define END_OF_MAIN()
 
     int _stdcall WinMain(void *hInst, void *hPrev, char *Cmd, int nShow)
     {
        return _WinMain((void*)_mangled_main, hInst, hPrev, Cmd, nShow);
     }
 
Hallo SFDrake1904,

d.h. das Programm ist eigentlich ein Windows Programm (wegen dem WinMain). D.h. auch die libcd.lib hat da doch eher nichts zu suchen.

Erstell mal das Projekt neu und nehme als Vorlage eine Win32 Anwendung und nicht ein Consolenprogramm.

MfG

Arnd
 
Hmm.. muss ich ausprobieren.
Meld mich in ein, zwei Tagen nochmal.

Bis denn
 
Danke Arnd!

Jetzt funktioniert das Prog.
Allerdings erscheint es jetzt in einem Windows Dialogfeld(also "Hallo Welt" und darunter zwei buttons OK Abbrechen)
Bei meinem alten mingW32 Compiler lief das ganze auf der Eingabeaufforderung.
However, danke!
 
Hallo SFDrake1904,

wenn es unter Dos laufen soll, dann gehe doch den anderen Weg.
Sprich als Projekttyp Console, aber dafür das END_OF_MAIN() weglassen.

MfG

Arnd
 
Zurück
Oben