Forum: linker problem tror jag (cpp)

Forum huvudsida -> Programmering -> linker problem tror jag (cpp)

Sidor: 1

Till botten

Dread 10:11 - 15:e April 2007 | Post #1
Medlem
Inlägg: 135


Skicka PM
när jag kompilerar min kod får jag följande fel meddelande :
  1. LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library
  2. Active.obj : error LNK2001: unresolved external symbol "class Starfield * Stars" (?Stars@@3PAVStarfield@@A)
  3. Init.obj : error LNK2019: unresolved external symbol "class Starfield * Stars" (?Stars@@3PAVStarfield@@A) referenced in function "void __cdecl InitGame(void)" (?InitGame@@YAXXZ)
  4. Debug\Basecode.exe : fatal error LNK1120: 1 unresolved externals


jag kan skicka upp hela koden, men... den är rätt lång så gör det ifall det behövs. Håller på och programmer med CDX GDK:et, och försöker göra så att stjärnorna åker bakom min karta, som är uppritad i Mappy med .map som filformat. Men får inte rätt på det hur jag än gör.

Jag jobbar enligt boken; "Spelprogrammering med CDX och OpenGL" av Mikael Bondestam och Johan Isaksson. och har laddat hem deras exempel (dem kombinerar dock inte Starfield med en mappy karta, men kan inte förstå varför det inte skulle funka) . Hur som helst så testar jag föra över min kod i deras exempelkod, och då blir felmeddelandet i princip tvärtom:

  1. 1>LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library
  2. 1>Active.obj : error LNK2001: unresolved external symbol "class CDXMap * Map" (?Map@@3PAVCDXMap@@A)
  3. 1>Init.obj : error LNK2001: unresolved external symbol "class CDXMap * Map" (?Map@@3PAVCDXMap@@A)
  4. 1>Init.obj : error LNK2001: unresolved external symbol "class CDXTile * MapTiles" (?MapTiles@@3PAVCDXTile@@A)
  5. fatal error LNK1120: 2 unresolved externals


alltså mappy som krånglar och inte Starfield klassen Smiley Helt förvirrad om jag ska vara ärlig. Jag vet att jag måste ändra min klass lite annars följer inte stjärnorna med medan skeppet åker vidare, men just nu är jag bara intresserad av att få programmet att köra överhuvudtaget...

-------------------------
c++



sdac 12:44 - 15:e April 2007 | Post #2
Medlem
Inlägg: 235


Skicka PM
    Citat av Dread:

  1. LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library



Testat göra det som står där? Lägg till /NODEFAULTLIB:libcmt eller nåt, antar att library i slutet syftar på vilket lib som orsakar en konflikt.

'Unresolved symbols' och liknande felmeddelanden beror oftast på att du har inkluderat headerfiler, men inte länkat rätt bibliotek, vilket resulterar i att programmet har en symbol men vet inte vart den pekar.




Dread 13:03 - 15:e April 2007 | Post #3
Medlem
Inlägg: 135


Skicka PM
Jag testade sätta på det i basecode properties->linker->input, Ignore all default libraries: yes(/NODEFAULTLIB)
men då blir det så fruktansvärt många fel, + att dem två under (se första inlägget) fortfarande finns kvar.

sen på samma sökväg har jag "Ignore Specifik Library" och så står det bredvid LIBC LIBCMT som verkar vara samma bibiliotek som orsakar konflikten.

Men det funkar att kompilera trots denna konflikten, för den dyker alltid upp.

Jag är inte direkt jätte haj på att skapa nya headers å länka ihop dem, osv. Men om jag inte har med själva kartan (men länkar fortfarande Starfield), så fungerar koden smärtfritt, men så fort jag lägger in kartan så säger den som i första inlägget. kanske borde ladda upp filen för lättare överblick?



EDIT, eftersom jag är tvungen att vänta i 30 minuter innan jag skapar ett nytt inlägg i samma tråd tydligen:

Nu har det märkligaste av märkligaste hänt... jag raderade lite onödiga kommentarer... tryckte F5 för att kontrollera så jag inte gjort extra fel... men tydligen hade jag gjort extra rätt, för nu funkar det precis som det ska O.o

har fortfarande ingen aning om vad som var fel, eller hur jag fixade det.

-------------------------
c++

Senast redigerad 13:27 - 15:e April 2007


Dread 21:05 - 15:e April 2007 | Post #4
Medlem
Inlägg: 135


Skicka PM
meh... mycket märkligt tycker jag, det som funkar i ena projektet behöver av någon väldigt märklig anledning inte funka i det andra, även om koden är snarlik (mindre förändringar), och borde funka.

ex. i ena projektet har jag deklarerat 4 CDXSprite´s, och i det andra 1, men ska lägga till ett till, men inte då...då säger den stop, och ger mig linker problemSmiley mycket märkligt tycker jag... tycker det borde bli linkproblem på båda, och inte bara på ena... Speciellt med tanke på att kod styckena är identiska bortsett från deklarationsnamnen

-------------------------
c++



Dread 08:17 - 16:e April 2007 | Post #5
Medlem
Inlägg: 135


Skicka PM
nu har jag kommit fram till hur jag ska lösa, dock inte på ett tillfredsställande sätt, måste skapa ett nytt projekt och kopiera in all kod i det , så funkar det prima utan minsta problem (bortsett från bibiliotekskrocken)

-------------------------
c++



isglass 12:08 - 25:e April 2007 | Post #6
Medlem
Inlägg: 2


Skicka PM
Det där problemet är när Visual Studio inte fattar att du lagt till något nytt i header-filen. Det försöker vara smart och bara kompilera ändringarna, men lyckas inte alltidSmiley

Vanligtvis löser det sig genom att välja menyn Build->Rebuild All. Då tvingas den göra om allt och så brukar unresolved external symbol försvinna (om det inte är så att en fil saknas, då blir det oxå så).

Testa om det dyker upp igen!

-------------------------
Ingen signatur!



Sidor: 1

Forum huvudsida -> Programmering -> linker problem tror jag (cpp)
Atom feed

Du får inte posta i den här tråden | Till toppen