LinuxからWindows環境に切り替えようとしていますが、非常に難しいパスです。Windowsでboost :: asioをコンパイルする
今回は、私がブーストライブラリで作業できるかどうかをテストしたかったのです。
私はWindowsでのboostのコンパイルに問題があったので、プリコンパイルされたバージョンをダウンロードしました。私はすべてを解凍し、ヘッダーのみの図書館員をコンパイルできることを積極的にテストしました。
次に、単純なboost :: asioの例をコピーしました。 Eclipseですべてをセットアップしました。コンパイルはうまくいったけど、リンク時に私は 'boost :: system'内部のものに '未定義リファレンス'の問題がありました。
C:/Users/jacek/cpp/boost_1_62_0/boost/system/error_code.hpp:221: undefined reference to `boost::system::generic_category()'
C:/Users/jacek/cpp/boost_1_62_0/boost/system/error_code.hpp:222: undefined reference to `boost::system::generic_category()'
C:/Users/jacek/cpp/boost_1_62_0/boost/system/error_code.hpp:223: undefined reference to `boost::system::system_category()'
ライブラリのディレクトリへのパスと同様に、 '-lboost_system'をリンクオプションに追加しました。しかし、これは役に立たなかった。
g++ "-LC:\\Users\\jacek\\cpp\\boost_1_62_0\\lib64-msvc-14.0" -o TestAsio.exe "src\\Main.o" -lboost_system
私は、ライブラリのディレクトリをチェックし、名前に「boost_system」を含むファイルの束がありました。彼らは以下のとおりです。
- libboost_system-vc140-MT-1_62.lib
- libboost_system-vc140-MT-GD-1_62.lib
- libboost_system-vc140-MT-S-1_62.lib
- libboost_system -vc140-MT-SGD-1_62.lib
- libboost_system-vc140-S-1_62.lib
- libboost_system-vc140-SGD-1_62.lib
私はどちらを使うべきか分からなかった。私はリンクオプションに 'libboost_system-vc140-mt-1_62'を追加しようとしましたが、私は他のすべてのファイルを試しましたが、Linuxのパターン 'libboost_system.a'にファイルの名前を変更しようとしました。
g++ "-LC:\\Users\\jacek\\cpp\\boost_1_62_0\\lib64-msvc-14.0" -o TestAsio.exe "src\\Main.o" -llibboost_system-vc140-mt-1_62 -llibboost_system-vc140-mt-gd-1_62 -llibboost_system-vc140-mt-s-1_62 -llibboost_system-vc140-mt-sgd-1_62 -llibboost_system-vc140-s-1_62 -llibboost_system-vc140-sgd-1_62
私はここで間違っていますか? boost asio example compilation error
それはブーストのプリコンパイルされたバージョンがVisual Studionで作成されたように見えるとGと互換性がありません++: 助けてください... YotKay
"-LC:\\ strange、-L" C:\\? – willll
私は自分自身で解決策を見つけたと思う:http://boost.org/more/getting_started/windows.html – YotKay
ポイントは、プリコンパイルされたバイナリはVisual Studioでコンパイルされていて、G ++では互換性がないということです。たわごと! – YotKay