Hallo Zusammen,
ich bekomme vom linker folgende Meldung und
kann eigentlich keinen Fehler finden.
Mit Borland konnte ich das so fehlerfrei übersetzen.
Ich habe die Klasse in einem seperaten file.
hier die Melung
user@bully:~/projekt/HauptPrg$ make
arm-linux-3.4.2-g++ -pthread -Lobj/ obj/display.o obj/motor.o obj/nav.o obj/path.o obj/verhalte.o obj/iobuffer.o obj/main.o obj/tcpservm.o -g -o robytask
obj/iobuffer.o(.text+0xa84):source/iobuffer.cpp:383: undefined reference to `PitbullyIOBuffer::WriteOrderSemaphore'
obj/iobuffer.o(.text+0xa90):source/iobuffer.cpp:383: undefined reference to `PitbullyIOBuffer::intDeviceHandle'
obj/iobuffer.o(.text+0xecc):source/iobuffer.cpp:383: undefined reference to `PitbullyIOBuffer::WriteOrderSemaphore'
obj/iobuffer.o(.text+0xed8):source/iobuffer.cpp:383: undefined reference to `PitbullyIOBuffer::intDeviceHandle'
obj/iobuffer.o(.text+0x1034):source/iobuffer.cpp:429: undefined reference to `PitbullyIOBuffer::intDeviceHandle'
obj/iobuffer.o(.text+0x103c):source/iobuffer.cpp:429: undefined reference to `PitbullyIOBuffer::WriteOrderSemaphore'
obj/iobuffer.o(.text+0x1184):source/iobuffer.cpp:429: undefined reference to `PitbullyIOBuffer::intDeviceHandle'
obj/iobuffer.o(.text+0x118c):source/iobuffer.cpp:429: undefined reference to `PitbullyIOBuffer::WriteOrderSemaphore'
obj/iobuffer.o(.text+0x1aec):source/iobuffer.cpp:800: undefined reference to `PitbullyIOBuffer::WriteOrderSemaphore'
obj/iobuffer.o(.text+0x1af0):source/iobuffer.cpp:800: undefined reference to `PitbullyIOBuffer::intDeviceHandle'
obj/iobuffer.o(.text+0x1bdc):source/iobuffer.cpp:836: undefined reference to `PitbullyIOBuffer::WriteOrderSemaphore'
obj/iobuffer.o(.text+0x2058):source/iobuffer.cpp:979: undefined reference to `PitbullyIOBuffer::intDeviceHandle'
collect2: ld returned 1 exit status
make: *** [robytask] Fehler 1
user@bully:~/projekt/HauptPrg$
user@bully:~/projekt/HauptPrg$
Kennt jemand die Lösung ?
Edit: Habe die Lösung selber gefunden. Static Element der Klasse vergessen ausserhlab der Klasse vorzubelegen.
Gruss
krabbels schrieb:
ich benutze visual studio express und möchte damit nun ein programm mit hilfe der winapi schreiben.
da es sehr mühsehlig sein dürfte die einzelnen libarys für jede funktion der winapi rauszusuchen
Naja, eigentlich nicht. Steht ja in der MSDN, welche Bibliotheken du brauchst. Grundsätzlich sind das kernel32.lib und user32.lib. Für grafische Sache kommt noch gdi32.lib hinzu. Und nur bei ausgefallenen Sachen (bezogen auf einen Anfänger) brauchst du mal noch eine zusätzliche Bibliothek, wie zB advapi32.lib.
sollte auch mit borland free bcc5.5
und digital mars gehen.
wahrscheinlich auch mit weiteren, wenn man nur das unbedingt notwendige
kopiert.
nicht vergessen die path-angaben an das "neue" laufwerk anzupassen!
mfg f.-th.
Artchi schrieb:
Du mußt deinen C Code in eine .c Datei packen. Denn nur dann wird auch der C Compiler von VC++ anspringen.
Naja... dem MS Compiler kann man auch mittels "/Tc" sagen, dass er diese Datei als C-File compilieren solle (auch wenn sie eine cpp-Endung hat); bzw. global mittels "/TC".
Siehe: /Tc, /Tp, /TC, /TP (Specify Source File Type)
http://msdn2.microsoft.com/032xwy55
GPC schrieb:
Da geht nix seinen eigenen Weg, die STL ist Teil der Standardlib und die wiederum ist genau im ISO C++ Standard definiert.
Sorry GPC, aber da hast du leider unrecht. Lies dir mal das Interview mit A. Stepanov durch. Die STL wird kontinuierlich erweitert und ist somit weit über dem hinaus, was mal in den Standard eingelossen ist. Ganz davon abgesehen, das schon damals die STL nicht 100% in ihrer orig. Form übernommen wurde. Hier ein Ausschnitt aus dem Interview:
Are you still working on STL? Doing what?
Answer:
My group at SGI, - Matt Austern, Hans Boehm and myself, - just finished a new version of STL. It includes hash containers, thread safe memory allocation and spectacular web documentation. SGI released it into the public domain (http://www.sgi.com/Technology/STL). We hope that we will be able to keep STL growing. Multidimensional data structures, persistence, multithreading are among the things that we plan do add. Well, it is not clear how long we can keep doing this stuff. There are no support from my management for any of the STL/generic programming activities. It is very hard to explain to them why SGI should pay for extensions. (It was equaly hard to explain it to HP management. They canceled my project 5 months after STL was accepted into the standard.)
Quelle: http://www.stlport.org/resources/StepanovUSA.html
Hash Containers z.B. hat die Std-Lib nicht. Wer die STL benutzt, muß damit rechnen, das sein Programm auf einem reinen ISO-C++ System nicht compilierbar ist. Ich weiß, ist erbsenzählerei... aber mich stört es schon immer das die Stabndardlib als STL bezeichnet wird, vorallem da die Std-Lib mehr als nur die damalige STL drin hat.
Voralem, wollt ihr 2009 dann immer noch von der STL reden, obwohl dann die Standardlib mit Boost u.a. erweitert wird. Macht doch irgendwann keinen Sinn, wenn man es immer falsch bezeichnet...
Reyx schrieb:
Jochen Kalmbach schrieb:
Win32 Anwendungen verwenden keine INI-Dateien mehr!!!
Speichere es als XML oder in die Registry...
Anwendungsspeziefisch.
Naja, sagen wir mal so: Es hängt davon ab, ob Deine Anwendung das Windows-Logo will
http://www.microsoft.com/winlogo/software/default.mspx
http://www.microsoft.com/downloads/details.aspx?FamilyID=209e3d65-f0be-4eef-8602-73bb9bc29d54&DisplayLang=en
Dieser Thread wurde von Moderator/in SideWinder aus dem Forum DOS und Win32-Konsole in das Forum Compiler-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?
Dieses Posting wurde automatisch erzeugt.
hallo zusammen,
möchte auf dem 8051 ein kleines projekt verwirklichen. habe als entwicklungsumgebung eclipse 3.1 gewählt. dazu den cdt und den sdcc-compiler. nun benötige ich noch einen open source remote-debugger. deshalb wollte ich fragen ob sich jemand damit auskennt ob man den gdb dazu benutzen kann.
gruß
mdoemli
Erst mal feststellen worüber wir überhaupt schreiben.
Warscheinlich wird ein möglichst gleiche/r IDE/Compiler gesucht wie er
auf den Schulrechnern zu finden ist. Also ein Borlandprodukt.
Dann sollte geklärt werden ist der CBuilder nur ein Compiler wie z.b. der
free BCC5.5 oder sind damit die IDE's mit Compiler gemeint. Früher waren
dies eigenständige Produkte, die auch einfachen Delphicode übersetzen konnten,
dies gilt nicht für den free BCC. Heute sieht es so aus das die neuesten
Versionen von Delphi c/c++/c# übersetzen können.
Code::Blocks ist ursprünglich eine IDE und kein Compiler, wird aber inzwischen
mit Compiler zum Download angeboten. Mit Code::Blocks lassen sich diverse
Compiler ansteuern, die beiden Versionen, die ich kenne, steuern den free
BCC5.5 noch nicht in allen Fällen optimal an.
MfG f.-th.
Ich bin gerade am Versuchen, unter Linux mein Programm zu compilieren/linken.
so schaut das ganze unter Windows aus (damit es funkt muss ich die libpg.dll in gleichen Ordner wie die main.c haben)
**** Incremental build of configuration Debug for project control ****
make -k all
Building file: ../main.c
Invoking: GCC C Compiler
gcc -IC:\Programme\PostgreSQL\8.1\include -IC:\Programme\PostgreSQL\8.1\lib -O0 -g3 -Wall -c -fmessage-length=0 -omain.o ../main.c
Finished building: ../main.c
Building target: do.exe
Invoking: GCC C Linker
gcc -o do.exe ./main.o -Lc:/Programme/PostgreSQL/8.1/lib/ -lpq
Finished building target: do.exe
Build complete for project control
Ich wie mach ich das unter Linux? (ich verwende Suse)
vielleicht kann mir jemand bissl weiterhelfen.
Gruß
Dominik
Schau doch einfach in der MSDN nach, da steht zu jeder Compiler-Version die Änderungen. Was willst du denn von uns hören? Das wir dir jeden Punkt aufzählen? VC++2003 war schon sehr gut am Standard, deshalb kann ich dir schon mal sagen, das sich in VC++2005 nicht sehr viel getan haben kann, weil nicht mehr viel zu machen ist. Für Details bitte die MSDN konsultieren!
Techniker_Roland schrieb:
aber ich möchte so wenig wie möglich von microsoft benutzen. ich glaube manche werden dies verstehen.
OT: Ich zumindest nicht.
Hallo!
Ich habe eine Menge C++ der unter MSVC 6.0 problemlös übersetzbar ist. Besteht aus vielen Bibliotheken. Ich habe nun begonnen das unter cygwin/gcc zu compilieren. Soll dann mal unter Linux compiliert werden.
Lib1 lässt sich kompilieren und linken -> Lib1.so. Lib2 verwendet Lib1. Linker reklamiert einige "multiple definitions":
Habe Klasse DRLException :: std::exception mit inline Konstruktor. Einige Klassen in Lib1 verwenden DRLException. Auch in Lib2 wird DRLException verwendet. Nun wird etwa
DRLException::DRLException als mehrfach definitert reklamiert.
Hat jemand eine Ahnung was das zu bedeuten hat und was ich tun muss? Danke
PS: Ich hatte vorher auch multiple definition von std::min. Das kam daher, dass als Relikt DRLException.h #include <iterator> beinhaltete. Das habe ich dann weggegeben. Diese Mehrfachdefinition ist damit verschwunden. Vielleicht bringt das jemand auf die richtige Fährte. Ich bin zur Zeit etwas ratlos.