Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

llennard

Frischling

Beiträge: 74

Wohnort: Kiel

  • Private Nachricht senden

11

23.10.2006, 13:01

Problem beim Linken

hallo, ich habe auch ein problem beim linken.
ich hab folgendes gemacht:

ich habe in meine statische lib "unzip.h" includiert
ich habe alle *.c - Dateien außer mini(unz/zip).c aus dem minizip-Verzeichnis hinzugefügt wie beschrieben

dann habe ich die funktion aus dem tutorial übernommen und das projekt kompiliert. Der Compliler meinte mir fehlen noch ein paar Header-Dateien, also habe ich auch noch die Header-Dateien aus dem mimizip-Verzeichnis zum Projekt hinzugefügt.

Nun hat mir der Compiler gesagt, dass "bestimmte Objekte nicht definiert sind" und ich habe deshalb die zlib.lib mitgelinkt.

Als ich jetzt die statische lib und die funktion aus dem tutorial, die darin ist, in einem anderen Projekt gebraucht habe, kam folgende Linker-Fehler:

Linker-Vorgang läuft...
msvcrt.lib(MSVCRT.dll) : error LNK2005: _malloc bereits in LIBC.lib(malloc.obj) definiert
msvcrt.lib(MSVCRT.dll) : error LNK2005: _free bereits in LIBC.lib(free.obj) definiert
LIBC.lib(crt0init.obj) : warning LNK4098: Standardbibliothek "msvcrt.lib" steht in Konflikt mit anderen Bibliotheken; /NODEFAULT:Bibliothek verwenden
Release/PlaySound.exe : fatal error LNK1169: Ein oder mehrere mehrfach definierte Symbole gefunden
Fehler beim Ausführen von link.exe.

PlaySound.exe - 3 Fehler, 1 Warnung(en)


Was hat das zu bedeuten?

David Scherfgen

Administrator

  • »David Scherfgen« ist der Autor dieses Themas

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

12

23.10.2006, 18:52

Linke die dynamische Runtime (Multithreaded DLL).

llennard

Frischling

Beiträge: 74

Wohnort: Kiel

  • Private Nachricht senden

13

23.10.2006, 20:01

danke, jetzt lässt es sich linken.

Allerdings funktioniert es auch bei mir nicht richtig.
Das Programm stürzt ab, sobald ich eine Datei mit der Funktion laden will.

BlackSnake

Community-Fossil

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

14

23.10.2006, 22:21

jo das problem habe ich auch noch. ich habe schon alles erdenklich versucht aber abstürzen tut es trotzdem.

llennard

Frischling

Beiträge: 74

Wohnort: Kiel

  • Private Nachricht senden

15

26.10.2006, 11:07

Juhu!!!!! Suuuuuuuuuuuuuuper!!!!!!!!

VOLL KRASS!!!

Ich hab den Fehler, jetzt geht's!
Also ich hatte die Funktion aus dem Tutorial in die TriBase-Engine integriert und in der Datei tbFile.cpp in der Funktion tbReadFile(...) am Ende die Funktion tbReadZipFileObject(...) durch die Funktion aus dem Tutorial ersetzt.

Nun habe ich aber in dieser Funktion des zurückgegebenen Zeigers mit new allokiert und nicht mit tbMemAlloc(...).
Das führt allerdings zu einem Fehler, weil die Tribase-Engine später die Größe des Speicherbereichs mit tbGetMemSize(...) abfragt.

Jetzt habe ich einfach den Speicher mit tbMemAlloc(...) allokiert und es geht.

Noch mal vielen Dank für das hilfreiche Tutorial und die Anregung mit der Zip-Funktion!

llennard

Frischling

Beiträge: 74

Wohnort: Kiel

  • Private Nachricht senden

16

26.10.2006, 11:12

Übrigens, das wollt ich noch fragen:

Ich benutze ja jetzt die Dll - Version, weil es bei der Lib - Version diese komischen Linker fehler gibt.

Kann mal die Fehler nicht auch anders beheben?
Ich möchte nämlich gerne die Lib-Version benutzen.

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

17

26.10.2006, 15:34

Welche Libs hast du gelinkt bei deinen Versuchen (statisch und für dll)? Und denk nochmal nach, ob du vielleicht doch sonst noch Infos dazu hast.

Anonymous

unregistriert

18

26.10.2006, 15:36

Wie wäre es, wenn du die Lib einfach ignorierst? Dann sollten die
Fehler weg sein.

************

Anonymous

unregistriert

19

26.10.2006, 16:32

***********

In den Projekt Eigenschaften ignorierst du einfach bei Linker die msvcrt.lib.
Musst du gucken, was dann passiert, habe mit dem ignorieren noch nicht
sonderlich viele Erfahrungen gemacht.

***********

llennard

Frischling

Beiträge: 74

Wohnort: Kiel

  • Private Nachricht senden

20

26.10.2006, 17:12

Also ich weiß ja nicht welchen compiler du benutzt (ich benutze vc++6), aber bei projekteinstellungen unter linker steht nichts von der lib...

Werbeanzeige