Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

C++ linking probleem? *

Pagina: 1
Acties:

Verwijderd

Topicstarter
wil gebruik gaan maken van een SDK van een beveiligingscamera en de daarbij geleverde C++ voorbeelden. Een van de voorbeelden is een consoleapplicatie voor zowel Windows als Linux. Ik probeer via g++ het main.cpp bestand te compileren.

Allereerst de inhoud van main.cpp:
http://pastebin.com/m2308de59


de foutmelding die ik krijg na het het geven van een: g++ --verbose main.cpp:
develop1:~/Console# g++ --verbose main.cpp
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v --enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --program-suffix=-4.1 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr --with-tune=i686 --enable-checking=release i486-linux-gnu
Thread model: posix
gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)
/usr/lib/gcc/i486-linux-gnu/4.1.2/cc1plus -quiet -v -D_GNU_SOURCE main.cpp -quiet -dumpbase main.cpp -mtune=i686 -auxbase main -version -o /tmp/ccXt2Zm5.s
ignoring nonexistent directory "/usr/local/include/i486-linux-gnu"
ignoring nonexistent directory "/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../i486-linux-gnu/include"
ignoring nonexistent directory "/usr/include/i486-linux-gnu"
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../include/c++/4.1.2
/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../include/c++/4.1.2/i486-linux-gnu
/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../include/c++/4.1.2/backward
/usr/local/include
/usr/lib/gcc/i486-linux-gnu/4.1.2/include
/usr/include
End of search list.
GNU C++ version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21) (i486-linux-gnu)
compiled by GNU C version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21).
GGC heuristics: --param ggc-min-expand=44 --param ggc-min-heapsize=28059
Compiler executable checksum: 183d42a838ed2b7313bffcb8f2f2fda7
as -V -Qy -o /tmp/ccvUkIbl.o /tmp/ccXt2Zm5.s
GNU assembler version 2.17 (i486-linux-gnu) using BFD version 2.17 Debian GNU/Linux
/usr/lib/gcc/i486-linux-gnu/4.1.2/collect2 --eh-frame-hdr -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib/crt1.o /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib/crti.o /usr/lib/gcc/i486-linux-gnu/4.1.2/crtbegin.o -L/usr/lib/gcc/i486-linux-gnu/4.1.2 -L/usr/lib/gcc/i486-linux-gnu/4.1.2 -L/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib -L/lib/../lib -L/usr/lib/../lib /tmp/ccvUkIbl.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/i486-linux-gnu/4.1.2/crtend.o /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib/crtn.o
/tmp/ccvUkIbl.o: In function `main':
main.cpp:(.text+0x4779): undefined reference to `AV2000F::AV2000F()'
main.cpp:(.text+0x4787): undefined reference to `AV2000F::Initialization()'
main.cpp:(.text+0x510d): undefined reference to `AV2000F::~AV2000F()'
main.cpp:(.text+0x512f): undefined reference to `AV2000F::~AV2000F()'
collect2: ld returned 1 exit status

van wat ik heb Googelen schijnt dit een 'linking' probleem te zijn, alleen heb ik geen flauw idee hoe dit opgelost kan worden.

Verwijderd

Ik krijg de indruk dat je zelf niet helemaal begrijpt waar je mee bezig bent en eigenlijk het verzoek voor debuggen hier neer legt.

Wat mij sowieso een beetje vreemd overkomt is het volgende:
code:
1
2
3
4
main.cpp:(.text+0x4779): undefined reference to `AV2000F::AV2000F()'
main.cpp:(.text+0x4787): undefined reference to `AV2000F::Initialization()'
main.cpp:(.text+0x510d): undefined reference to `AV2000F::~AV2000F()'
main.cpp:(.text+0x512f): undefined reference to `AV2000F::~AV2000F()'

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Jij gebruik in main.cpp een referentie welke niet bestaat (AV2000F). Missien kun je middel de -I switch het pad naar de include directory van AV2000 aangeven (zoals -I/usr/local/av2000f/include).

Misschien is het ook verstandig dat je even de GCC handleidingen en tutorials doorloopt, want dit behoort toch wel tot de basics van het C++ programmeren.

If it isn't broken, fix it until it is..


  • Cyphax
  • Registratie: November 2000
  • Laatst online: 19:32

Cyphax

Moderator LNX
Dat linking probleem komt waarschijnlijk omdat een van je includes niet gevonden kan worden. Als ik zo snel kijk gok ik op "AV2000Types.h".
Kijk even na of dat spul allemaal bestaat en op de goede plek en kijk even naar de -L parameter, daar kan je nog een path opgeven (die zie je ook veel voorkomen in die output) als ik me niet vergis.

Saved by the buoyancy of citrus


  • Sendy
  • Registratie: September 2001
  • Niet online
De linker zoekt een paar functies in een bibliotheek die je niet opgeeft op de commandline (dit zijn dus die functies AV200F::AV2000F(), etc.)

Deze bibliotheek zal meegeleverd zijn door de fabrikant. Als je deze al in de zelfde directory als de source code hebt gezet, moet je alleen nog "-l<libname>" toevoegen aan de g++ commandline. <libname> is dan de naam van de library (zonder lib- en zonder -.so).
[edit]
Het gaat hiet dus niet om de header file of andere includes; de linker klaagt:
collect2: ld returned 1 exit status

[ Voor 15% gewijzigd door Sendy op 25-02-2008 14:29 ]


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 08:34

Creepy

Tactical Espionage Splatterer

Verwijderd schreef op maandag 25 februari 2008 @ 14:24:
Ik krijg de indruk dat je zelf niet helemaal begrijpt waar je mee bezig bent en eigenlijk het verzoek voor debuggen hier neer legt.

Wat mij sowieso een beetje vreemd overkomt is het volgende:
code:
1
2
3
4
main.cpp:(.text+0x4779): undefined reference to `AV2000F::AV2000F()'
main.cpp:(.text+0x4787): undefined reference to `AV2000F::Initialization()'
main.cpp:(.text+0x510d): undefined reference to `AV2000F::~AV2000F()'
main.cpp:(.text+0x512f): undefined reference to `AV2000F::~AV2000F()'
* Creepy gokt het zelfde. Dus wat heb je zelf al geprobeerd om je probleem op te lossen en wat ging dar niet goed mee? Zie ook Programming Beleid en dan met name Programming Beleid - De Quickstart. Zou je de gevraagde informatie willen aanvullen? Het dumpen van je code en foutmelding en hopen dat wij het voor je gaan oplossen is niet de bedoeling hier.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
begrijp er inderdaad nog vrij weinig van, maar probeer snel bij te leren. Heb iig genoeg materiaal om er vanavond verder in te duiken. En zal voortaan met wat specifiekere vragen komen.


-update: KDevelop gedownload en het geheel linked en compileert nu prima.

[ Voor 17% gewijzigd door Verwijderd op 12-03-2008 11:27 ]

Pagina: 1