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

1

16.02.2004, 14:19

Der Linker-Bastardo

Hallo. Willkommen bei meinem ersten Post. Nicht dass ich`s nicht geahnt hätte, dass es so kommen wird, aber: Der Linker heult rum und ich weiss nicht warum. :kotz:
Und zwar bei einem Besipiel von der CD, Kapitel 02/07 Beleuchtung. Bei allen anderen die ich probiert hab hat alles wunderbar geklappt.

Zitat


------ Erstellen gestartet: Projekt: Beleuchtung, Konfiguration: Debug Win32 ------

Verknüpfen...
LINK : warning LNK4075: '/EDITANDCONTINUE' wird auf Grund der Angabe von '/INCREMENTAL:NO' ignoriert
Beleuchtung.obj : error LNK2019: Nicht aufgelöstes externes Symbol '"__declspec(dllimport) enum tbResult __cdecl tbDoMessageLoop(enum tbResult (__cdecl*)(float),enum tbResult (__cdecl*)(float),double)" (__imp_?tbDoMessageLoop@@YA?AW4tbResult@@P6A?AW41@M@Z0N@Z)', verwiesen in Funktion '_WinMain@16'
.\Debug/Beleuchtung.exe : fatal error LNK1120: 1 unaufgelöste externe Verweise


Hier die Befehlszeilen, vielleicht helfen die ja:

Zitat




Die temporäre Datei "e:\TriBase\Beispiele\Kapitel 02\07 - Beleuchtung\Debug\RSP000002.rsp" wird erstellt. Inhalt:
[
/OUT:".\Debug/Beleuchtung.exe" /INCREMENTAL:NO /NOLOGO /DEBUG /PDB:".\Debug/Beleuchtung.pdb" /SUBSYSTEM:WINDOWS /MACHINE:X86 tribased.lib d3d9.lib d3dx9d.lib dxerr9.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib "\TriBase\Lib\TriBaseD.lib" "\DirectxSDK\Lib\d3d9.lib" "\DirectxSDK\Lib\d3dx9d.lib" "\DirectxSDK\Lib\DxErr9.lib"
".\Debug\Beleuchtung.obj"
".\Debug\Direct3DEnum.obj"
".\Debug\InitDirect3D.obj"
".\Debug\InitWindow.obj"
".\Debug\Beleuchtung.res"
]Erstellen der Befehlszeile "link.exe @"e:\TriBase\Beispiele\Kapitel 02\07 - Beleuchtung\Debug\RSP000002.rsp""


Danke im Voraus.


Ach und wenn ich schon grad dabei bin:

Warum verstehe ich nicht was der Linker von mir will? Gibt es da hervorragende Literatrur zu oder sowas? Dann würd ich die mir reinziehen und NIE wieder blöde Fragen (dazu) stellen.

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

2

16.02.2004, 17:37

error LNK2019: Nicht aufgelöstes externes Symbol '"__declspec(dllimport) enum tbResult __cdecl tbDoMessageLoop(enum tbResult (__cdecl*)(float),enum tbResult (__cdecl*)(float),double)"

Visual C++ Hilfe sagt dazu:

Zitat

In Funktion wurde ein nicht definiertes externes Symbol (Symbol) gefunden. Um diesen Fehler zu beheben, geben Sie eine Definition für das Symbol an oder entfernen den Code, der darauf verweist.


ich denke mal das besagt so ziemlich alles ;)

und Linkermeldungen sind bei jedem Compiler anders! Es gibt da keinen Standart. Deshalb muss man die etwas kennen, wenn man die nicht kennt, gibt man in der Hilfe die Fehlernumm an, in diesem Fall: LNK2019

In Deinem Beitrag befinden sich noch Fehler.
Bitte bearbeite die rot markierten Stellen und lösche diesen Text.

3

16.02.2004, 19:22

Mir ist nicht wirklich klar geworden was du mir sagen willst... dass mir der Linker-Bastard sagen will, dass er ein Symbol nicht versteht dass benutz wurde ist mir klar gewesen. Aber aus seinem Schnickschnackkram kann ich nicht erkennen welches das sein soll.

Oder bezeichnet etwa

Zitat

__declspec(dllimport) enum tbResult __cdecl tbDoMessageLoop(enum tbResult (__cdecl*)(float),enum tbResult (__cdecl*)(float),double)

ein einziges Symbol?? Was sollen die vielen "__". Ich versteh`s nicht.

Sorry, ich verwende das erste mal Dinge die ich nicht selbst geschrieben habe, vielleicht bin ich nur zu blöd...

Maxi

Treue Seele

Beiträge: 136

Wohnort: Müncheberg

Beruf: Ich muss noch in die Schule

  • Private Nachricht senden

4

16.02.2004, 19:57

ich verstehe den Fehelr nicht...
die vielen Unterstriche sind daher, dass TRIBASE_API zu __cdeclspec(dllimport) expandiert wird, das tut aber ncihts zur Sache. Das komische ist, dass nur dieser Fehelr kommt, als ob tbDoMessageLoop nicht in der lib definiert wäre.... Denn eingebunden wird sie ja, sonst kämen ja viel mehr Linkerfehler... komisch

weiß auch nicht, was man da machen kann, besonders, weil die anderen Programme ja anscheinend funktinieren
Gruß, Maxi

Hier, die Homepage von meiner Band:
www.maxis-house.de

Könnt euch unsere ersten Songs saugen...

5

16.02.2004, 20:00

Ob du nun eigene Sachen benutzt oder andere spielt für den Linker keine Rolle. Schliesslich werden die Fehlermeldungen ja nicht vom Programmierer geschrieben ;)

Was die Unterstriche angeht, die gehören su den einzelnen Definitionen. Z.B.:
__declspec(dllimport) heisst schlicht das die angegebene Funktion aus einer DLL Importiert wird. Das "Ding" heist einfach so.

__cdecl bestimmt die Art des Aufrufes der Funktion. Also z.B. in welcher Reihenfolge die Paramter auf den Stack gelegt werden.

Der Rest muss bekannt sein. Wenn nicht solltest du dir noch einmal ein Buch zur Hand nehmen ;)

Das Symbol das er nicht finden kann ist "__declspec(dllimport) enum tbResult __cdecl tbDoMessageLoop( enum tbResult (__cdecl*)(float), enum tbResult (__cdecl*)(float), double )". Sprich, der Linker kann die Funktion "tbDoMessageLoop" mit der Parameterliste "enum tbResult (__cdecl*)(float), enum tbResult (__cdecl*)(float), double" nicht finden.

Kontrolliere ob sie Überhaupt vorhanden ist und prüfe ob du nicht einen Schreibfehler gemacht hast.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

6

16.02.2004, 20:43

Total strange!

Hab einfach mal die Beleuchtung.obj aus dem Debug Verzeichnis gelöscht und jetzt tut ers. Bastardo!

Danke.

Klaus

Treue Seele

Beiträge: 245

Wohnort: Stuttgart

Beruf: Schüler

  • Private Nachricht senden

7

16.02.2004, 21:33

Ei, das hatte ich auch schon mal.
Dazu gibts den tollen Menüpunkt "Bereinigen". Ob das was anderes macht, als das Debug (oder Release) Verzeichnis zu leeren, weiß ich auch net, aber es hilft. xD
(Danke an David nochmal - der hat mir den Tipp "damals" gegeben)

baba
Klaus
Mozilla Firefox
The Browser - reloaded

Werbeanzeige