Boost Fehlermeldung



  • Hallo,

    also ich habe nun alles versucht.
    Ich arbeite auf einem x64 System habe MinGw installiert. x64 und 32

    Jetzt habe ich mingw32 installiert.
    Boost per Bjam erstellt.

    Compilereinstellungen:C und C++
    C:\boost_1_50_0

    Die Headerbeispiele funktionieren.
    Aber das Regex Beispiel nicht:(

    Includiere ich in Eclipse im MinGW C++ Linker:

    Libraries:
    libboost_regex-mgw47-mt-d-1_50

    Library Search Path:
    C:\boost_1_50_0\stage\lib

    Ich sehe dort auch die libboost_regex-mgw47-mt-d-1_50.a

    Trotzdem wird mir gesagt:
    C:\MinGW\bin/ld.exe: cannot find -llibboost_regex-mgw47-mt-d-1_50

    Ich kann nicht mehr:( Seit drei Tagen probiere ich alles aus:((
    Woran liegt das?
    Brauchst Boost irgendwelche besonderen Dateien?
    Beim aufruf von BJAM steht, siehe Bild:
    http://s14.directupload.net/file/d/2952/w4hv9p6j_png.htm

    Bitte Bitte ich brauche Hilfe noch nie war ich solange mit etwas so unproduktiv:(

    Welche Ironie, gerade Boost solltes das steigern:D

    MFG



  • Es müsste

    -lboost_regex-mgw47-mt-d-1_50
    

    statt

    -llibboost_regex-mgw47-mt-d-1_50
    

    heißen.



  • Habe es geändert trotzdem kommt:
    es geht danke 😃
    ich bin ja soooo dumm:(
    Danke !



  • So der nächste Fehler:

    C:/boost_1_50_0/boost/interprocess/detail/win32_api.hpp:1577:: undefined reference to `_imp__CoUninitialize@0'

    Das wird also auch wieder eine Library sein. wie finde ich denn raus welche dazu gelinkt werden muss?
    Kann mir jemande sagen wie das geht?
    Und wo man die Infos dazu findet?

    Danke..



  • Oder ist das eine Sache die mit MinGw zu tun hat?



  • Hat niemand eine Lösung? 😞



  • Google sagt: ole32.lib (und uuid.lib) dazulinken.



  • C:/boost_1_50_0/boost/interprocess/detail/win32_api.hpp:1691: undefined reference to `_imp__VariantClear@4'

    Fehler hat sich verändert aber nicht aufgelöst 😞

    So habe ich es gemacht:

    -luuid -lole32 -lws2_32



  • Hast die Hilfe zum Windows SDK installiert? Dort kannst du nachschauen, welche Bibliotheken du für welche Funktionen mitlinken musst. (VariantClear kommt z.B. aus oleaut32.lib).



  • Nein habe ich nicht?
    Hast du ein Link oder ist das einfach nen Textdokument?



  • C:/boost_1_50_0/boost/system/error_code.hpp:214: undefined reference to `boost::system::generic_category()'

    Jetzt bekomme ich noch diesen?

    Kann mir da jemande auch sagen welche lib dazu gelinkt werden muss?

    Und steht das auch in der WinApi Hilfe?
    Und was hat das ganze mit Boost zu tun?

    Ich bin bin euch sehr dankbar für eure Hilfe.



  • Kellerautomat schrieb:

    Linke die boost_system [...]



  • Du solltest Bibliotheken nicht einfach so benutzen (d.h. Header einbinden und Funktionen aufrufen), sondern auch vorher die zugehörige Doku lesen, da steht bei jeder halbwegs vernünftigen Bibliothek auch drin, was man wo dazulinken muss. Dann kommt es nicht dazu, dass du bei jedem zweiten Linkerfehler Dinge erfragen musst, die in der Doku stehen...



  • Hallo Danke Danke,
    ich werde in Zukunft immer lesen, nur muss das Projekt morgen fertig sein und ich musste es kurzfristig auf eine x64 Maschine portieren.

    Daher der Stress:

    Sorry das ich soviel Frage, aber es ist echt wichtig.

    Nachdem nun die Execompliert wurde sagt mir Windows:
    pthreadGC2-w32.dll fehlt auf dem PC.

    Diese habe ich mit pthread runterladen und in den MinGw include ordner gepackt mit ein paar anderen Dateien.

    Ich hoffe wirklich das dies das letzte Problem ist.



  • Also ein Lösung ist die dlls runterzuladen und einfach in einen Ordner zu packen und dem PATH hinzufügen.

    Vielen Dank nochmal an alle.



  • Hallo wieder mal so nen Problem:D
    Kann mir jemand sagen woran es liegen kann? Ich linke doch die Libs mit.

    g++ "-LC:\\boost_1_50_0\\stage" "-LC:\\boost_1_50_0\\bin.v2\\libs\\system\\build\\gcc-mingw-4.6.1\\release\\link-static\\threading-multi" "-LC:\\boost_1_50_0\\bin.v2\\libs\\thread\\build\\gcc-mingw-4.6.1\\release\\link-static\\threading-multi" "-LC:\\boost_1_50_0\\stage\\lib" -o UM6Server1.exe "src\\UM6\\UM6Server.o" "src\\UM6\\SerialPacket.o" "src\\UM6\\PacketHandler.o" "src\\UM6\\ChrUM6Driver.o" -lws2_32 -lboost_system-mgw46-mt-1_50 -lboost_thread-mgw46-mt-1_50 -loleaut32 -lole32 -luuid -lpthread 
    src\UM6\UM6Server.o: In function `_static_initialization_and_destruction_0':
    C:/boost_1_50_0/boost/system/error_code.hpp:214: undefined reference to `boost::system::generic_category()'
    C:/boost_1_50_0/boost/system/error_code.hpp:215: undefined reference to `boost::system::generic_category()'
    C:/boost_1_50_0/boost/system/error_code.hpp:216: undefined reference to `boost::system::system_category()'
    src\UM6\UM6Server.o: In function `ZN5boost4asio5error19get_system_categoryEv':
    C:/boost_1_50_0/boost/asio/error.hpp:216: undefined reference to `boost::system::system_category()'
    src\UM6\PacketHandler.o: In function `_static_initialization_and_destruction_0':
    C:/boost_1_50_0/boost/system/error_code.hpp:214: undefined reference to `boost::system::generic_category()'
    C:/boost_1_50_0/boost/system/error_code.hpp:215: undefined reference to `boost::system::generic_category()'
    C:/boost_1_50_0/boost/system/error_code.hpp:216: undefined reference to `boost::system::system_category()'
    src\UM6\PacketHandler.o: In function `ZN7MTQueueIP12SerialPacketED1Ev':
    C:\Users\Demo\Desktop\C++\UM6Server1\Debug/../src/UM6/MTQueue.h:26: undefined reference to `pthread_mutex_destroy'
    C:\Users\Demo\Desktop\C++\UM6Server1\Debug/../src/UM6/MTQueue.h:27: undefined reference to `pthread_cond_destroy'
    src\UM6\PacketHandler.o: In function `ZN7MTQueueIP12SerialPacketE7dequeueEv':
    C:\Users\Demo\Desktop\C++\UM6Server1\Debug/../src/UM6/MTQueue.h:62: undefined reference to `pthread_mutex_lock'
    C:\Users\Demo\Desktop\C++\UM6Server1\Debug/../src/UM6/MTQueue.h:65: undefined reference to `pthread_cond_wait'
    C:\Users\Demo\Desktop\C++\UM6Server1\Debug/../src/UM6/MTQueue.h:69: undefined reference to `pthread_mutex_unlock'
    src\UM6\ChrUM6Driver.o: In function `ZN12ChrUM6Driver5startEv':
    C:\Users\Demo\Desktop\C++\UM6Server1\Debug/../src/UM6/ChrUM6Driver.cpp:44: undefined reference to `pthread_create'
    src\UM6\ChrUM6Driver.o: In function `_static_initialization_and_destruction_0':
    C:/boost_1_50_0/boost/system/error_code.hpp:214: undefined reference to `boost::system::generic_category()'
    C:/boost_1_50_0/boost/system/error_code.hpp:215: undefined reference to `boost::system::generic_category()'
    C:/boost_1_50_0/boost/system/error_code.hpp:216: undefined reference to `boost::system::system_category()'
    src\UM6\ChrUM6Driver.o: In function `ZN5boost6system10error_codeC1Ev':
    C:/boost_1_50_0/boost/system/error_code.hpp:315: undefined reference to `boost::system::system_category()'
    src\UM6\ChrUM6Driver.o: In function `ZN7MTQueueIP12SerialPacketE7enqueueERS1_':
    C:\Users\Demo\Desktop\C++\UM6Server1\Debug/../src/UM6/MTQueue.h:50: undefined reference to `pthread_mutex_lock'
    C:\Users\Demo\Desktop\C++\UM6Server1\Debug/../src/UM6/MTQueue.h:53: undefined reference to `pthread_mutex_unlock'
    C:\Users\Demo\Desktop\C++\UM6Server1\Debug/../src/UM6/MTQueue.h:56: undefined reference to `pthread_cond_signal'
    


  • Spielt es eine Rolle mit welchem Compilder die Boost Libs compliert worden sind und ich sie dann mit einem anderen nutzen möchte?



  • larzarus schrieb:

    Spielt es eine Rolle mit welchem Compilder die Boost Libs compliert worden sind und ich sie dann mit einem anderen nutzen möchte?

    Ja, definitiv. Such mal im Netz nach "Name mangling"



  • So habe die Libs einfach nochmal neu Compliert

    b2
    

    Die Fehlermeldungen haben sich reduziert:D

    C:\Users\Demo\Workspace\Eclipse\Copy of NexusEmgServer1\Debug/../src/MTQueue.h:26: undefined reference to `pthread_mutex_destroy'
    C:\Users\Demo\Workspace\Eclipse\Copy of NexusEmgServer1\Debug/../src/MTQueue.h:27: undefined reference to `pthread_cond_destroy'
    src\PacketHandler.o: In function `ZN7MTQueueIP12SerialPacketE7dequeueEv':
    C:\Users\Demo\Workspace\Eclipse\Copy of NexusEmgServer1\Debug/../src/MTQueue.h:62: undefined reference to `pthread_mutex_lock'
    C:\Users\Demo\Workspace\Eclipse\Copy of NexusEmgServer1\Debug/../src/MTQueue.h:65: undefined reference to `pthread_cond_wait'
    C:\Users\Demo\Workspace\Eclipse\Copy of NexusEmgServer1\Debug/../src/MTQueue.h:69: undefined reference to `pthread_mutex_unlock'
    src\ChrUM6Driver.o: In function `ZN12ChrUM6Driver5startEv':
    C:\Users\Demo\Workspace\Eclipse\Copy of NexusEmgServer1\Debug/../src/ChrUM6Driver.cpp:44: undefined reference to `pthread_create'
    src\ChrUM6Driver.o: In function `ZN7MTQueueIP12SerialPacketE7enqueueERS1_':
    C:\Users\Demo\Workspace\Eclipse\Copy of NexusEmgServer1\Debug/../src/MTQueue.h:50: undefined reference to `pthread_mutex_lock'
    C:\Users\Demo\Workspace\Eclipse\Copy of NexusEmgServer1\Debug/../src/MTQueue.h:53: undefined reference to `pthread_mutex_unlock'
    C:\Users\Demo\Workspace\Eclipse\Copy of NexusEmgServer1\Debug/../src/MTQueue.h:56: undefined reference to `pthread_cond_signal'
    

    Muss ich ne extra Version von PThread benutzen oder einfach die win32?

    Ich arbeite auf einem x64 System und erstelle eine x86 Programm.

    Danke schon mal 😉



  • auch das gelöst:

    http://sources.redhat.com/pthreads-win32/

    laden und dann libpthread.a in C:\MinGW\lib kopiert.


Anmelden zum Antworten