Boost Fehlermeldung



  • 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