2017-03-31 18 views
0

私は大学の試験のための個人プロジェクトを作成する必要があるため、このライブラリセットに近づいています。ネットワーキング機能で何かしたいと思います。私はすでにこの特定のライブラリに関する本を手に入れましたが、今私は自分のプロジェクトでこれをリンクすることはできません(私の本はlinuxとGCCをリンクする方法しか説明していませんが、Windows 10ではMinGWとCLIONを組み合わせています)。 私はこのような単純な空のプロジェクトのコンパイル時:Boost.AsioをCLionにリンクするときのStatic_initialization_and_distructionエラー

#include <boost/asio.h> 

int main (int argc, char ** argv) { 

    return 0; 
} 

を、私は、この印象的なエラーが発生します。

CMakeFiles\Hello.dir/objects.a(main.cpp.obj): In function `_static_initialization_and_destruction_0': 
    C:/boost_1_63_0/boost/system/error_code.hpp:221: undefined reference to `boost::system::generic_category()' 
    C:/boost_1_63_0/boost/system/error_code.hpp:222: undefined reference to `boost::system::generic_category()' 
    C:/boost_1_63_0/boost/system/error_code.hpp:223: undefined reference to `boost::system::system_category()' 
    CMakeFiles\Hello.dir/objects.a(main.cpp.obj): In function `ZN5boost4asio5error19get_system_categoryEv': 
    C:/boost_1_63_0/boost/asio/error.hpp:230: undefined reference to `boost::system::system_category()' 
    CMakeFiles\Hello.dir/objects.a(main.cpp.obj): In function `ZN5boost4asio6detail17winsock_init_base7startupERNS2_4dataEhh': 
    C:/boost_1_63_0/boost/asio/detail/impl/winsock_init.ipp:39: undefined reference to `[email protected]' 
    CMakeFiles\Hello.dir/objects.a(main.cpp.obj): In function `ZN5boost4asio6detail17winsock_init_base7cleanupERNS2_4dataE': 
    C:/boost_1_63_0/boost/asio/detail/impl/winsock_init.ipp:56: undefined  reference to `[email protected]' 
    collect2.exe: error: ld returned 1 exit status 
    CMakeFiles\Hello.dir\build.make:96: recipe for target 'Hello.exe' failed 
    CMakeFiles\Makefile2:66: recipe for target 'CMakeFiles/Hello.dir/all' failed 
    mingw32-make.exe[3]: *** [Hello.exe] Error 1 
    mingw32-make.exe[2]: *** [CMakeFiles/Hello.dir/all] Error 2 
    mingw32-make.exe[1]: *** [CMakeFiles/Hello.dir/rule] Error 2 
    CMakeFiles\Makefile2:78: recipe for target 'CMakeFiles/Hello.dir/rule' failed 
    mingw32-make.exe: *** [Hello] Error 2 
    Makefile:117: recipe for target 'Hello' failed 

ここでは私のCMakeLists.txt

cmake_minimum_required(VERSION 3.6) 
    project(Hello) 


    set(CMAKE_CXX_STANDARD 14) 

    set(SRC_FILES main.cpp) 
    include_directories(C:\\boost_1_63_0) 
    link_directories(C:\\boost_1_63_0) 

    find_package(BOOST 1.63.0 REQUIRED) 

    add_executable(Hello ${SRC_FILES}) 

どのように私はこの問題を解決することができますか? ありがとうございます!

EDIT

それは次のように私は私のCMakeLists.txtを更新:

cmake_minimum_required(VERSION 3.8.0) 
project(Hello) 


set(CMAKE_CXX_STANDARD 14) 

set(SRC_FILES main.cpp) 

set(BOOST_ROOT C:\\boost_1_63_0) 
find_package(Boost 1.63.0 COMPONENTS system REQUIRED) 
find_library(WS2_32_LIBRARY ws2_32) 

link_directories(C:\\boost_1_63_0) 
link_libraries(${BOOST_LIBRARIES}) 

add_executable(Hello ${SRC_FILES}) 
target_link_libraries(Hello ${WS2_32_LIBRARY} ${BOOST_LIBRARIES}) 

そして、私は私のプログラムを教えてくれたときに、今、私はとにかく、すべてのエラーを取得しない:

#include <boost/asio.hpp> 

ブーストが赤色になり、スタティックアナライザから「ブーストが見つかりません」と表示されます。 今どこに問題がありますか? ありがとう!

答えて

0

あなたがBoost.SystemWinsockとリンクするので、あなたのCMakeLists.txtにこのような何かを追加する必要があります:ラスタのIUUC @Baffo

find_package(Boost COMPONENTS system REQUIRED) 
find_library(WS2_32_LIBRARY ws2_32) 
target_link_libraries(Hello ${WS2_32_LIBRARY} ${Boost_SYSTEM_LIBRARY}) 
+0

を、今、あなたのプログラムがコンパイルされ、実行されますが、あなたのIDEには、認識しないのですか?私はあなたがIDEを設定し、ヘッダファイルがどこに存在するかを伝えるべきだと考えています。助けが必要な場合は、別の質問を投稿し、正しくタグ付けしてください。 –

+0

いいえ、私のプログラムはコンパイルされず、ビルド時に "Boostが見つかりませんでした"と表示されます。とにかくCMakeのデバッグでは、Boost 1.63.0とboost :: systemを見つけることができます。 –

+0

@Baffo rastaおそらくあなたはmingwのためにBoostを構築していないでしょうか? –

関連する問題