我試圖從Linux切換到Windows環境,但發現它非常困難。在Windows上編譯boost :: asio示例
這次我想測試是否可以使用boost庫。
我在編譯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:\\看起來很奇怪,-L」C:\\? – willll
我想我在這裏找到了一個解決方案:http://boost.org/more/getting_started/windows.html – YotKay
問題是預編譯的二進制文件是用Visual Studio編譯的,它們與G ++不兼容。拉屎! – YotKay