Sepertinya saya tidak bisa mendapatkan ini untuk bekerja. Saya membuat aplikasi konsol sederhana (yang bergantung pada websocket++
perpustakaan) yang membutuhkan Boost
perpustakaan .. tetapi ketika saya mencoba untuk mengkompilasi saya mendapatkan:
kesalahan fatal LNK1104: tidak dapat membuka file 'libboost_system-vc110-mt-gd-1_51.lib'
Namun, saya melakukan bjam yang membuat lib in (boost_root)/stage/libs
dan saya menghubungkan path ke libs ke compiler C++/Additionnals includes
.
Jika saya lihat di (boost_root)/stage/libs
file libboost_system-vc110-mt-gd-1_51.lib
tersebut tidak ada. Ini disebut libboost_system-vc110-mt-sgd-1_51.lib
sebagai gantinya.
Ada ide?
VS2012 developer command prompt
, buka direktori root boost Anda dan ketikbootstrap
, lalu ketikb2
dan Anda akan mendapatkan satu set lengkap file perpustakaan./MD
?Jawaban:
The C ++ → General → lain termasuk Direktori parameter untuk daftar direktori dimana compiler akan mencari file header.
Anda perlu memberi tahu penaut tempat mencari perpustakaan untuk ditautkan. Untuk mengakses pengaturan ini, klik kanan pada nama proyek di jendela Solution Explorer , lalu Properties → Linker → General → Additional Library Directories . Masuk di
<boost_path>\stage\lib
sini (ini adalah jalur tempat pustaka berada jika Anda membuat Boost menggunakan opsi default).sumber
Ini adalah cara termudah untuk seorang amatir seperti saya yang belajar C ++ sendiri:
Pertama, Unzip pustaka boost ke direktori pilihan Anda. Saya sarankan
c:\directory
.c:\boost_1_57_0
.Lalu pergi ke perpustakaan tautan jika Anda mengalami masalah Anda.
c:\boost_1_57_0
.booststrap.bat
(jangan repot-repot mengetik di jendela perintah tunggu saja dan jangan tutup jendela yang merupakan tempat saya mengalami masalah yang membutuhkan waktu dua minggu untuk saya selesaikan. Setelah beberapa saatbooststrap
akan berjalan dan menghasilkan file yang sama, tetapi sekarang dengan dua nama berbeda:,b2
danbjam
.b2
dan tunggu sampai berjalan.bjam
dan tunggu sampai berjalan. Kemudian folder akan dibuat bernamastage
.c:\boost_1_57_0\stage\lib
.Dan Anda siap berangkat!
sumber
bootstrap.bat
(butuh 10-20 detik); d) ketik./b2
sesuai instruksi (butuh 30-40 menit untuk menyelesaikannya).Saya memiliki masalah yang sama. Itu disebabkan karena saya menyusun Boost dengan Visual C ++ 2010 (v100) dan saya mencoba menggunakan pustaka dengan Visual Studio 2012 (v110) karena kesalahan.
Jadi, saya mengubah konfigurasi (dalam Visual Studio 2012) ke Properti proyek -> Umum -> Plataform Toolset dan mengubah nilai dari Visual Studio 2012 (v110) menjadi Visual Studio 2010 (v100) .
sumber
Solusi lain:
Saya bingung karena saya menyertakan boost_regex-vc120-mt-gd-1_58.lib di properti Tautan-> Ketergantungan Tambahan, tetapi tautan terus memberi tahu saya bahwa itu tidak dapat membuka libboost_regex-vc120-mt-gd-1_58.lib ( perhatikan awalan lib). Saya tidak menentukan libboost_regex-vc120-mt-gd-1_58.lib.
Saya mencoba menggunakan (dan telah membangun) pustaka dinamis boost (.dlls) tetapi tidak memiliki makro BOOST_ALL_DYN_LINK yang ditentukan. Tampaknya ada petunjuk dalam kompilasi untuk menyertakan pustaka, dan tanpa BOOST_ALL_DYN_LINK, ia mencari pustaka statis (dengan awalan lib), bukan pustaka dinamis (tanpa awalan lib).
sumber
Saya memiliki masalah yang sama dan kesalahan saya adalah saya telah menginstal biner boost_1_55_0-msvc-11.0-32.exe untuk digunakan dengan visual c ++ 2010 yang memiliki versi v100 (properti proyek-> ConfiguratioProperties-> General-> platformTooset) bukan v110 sebagai visual c ++ 2012. Jadi saya mengunduh boost_1_55_0-msvc-10.0-32.exe dan sekarang semuanya baik-baik saja sejauh ini.
sumber
Jika Anda mengalami masalah dalam membangun peningkatan atau memilih untuk tidak melakukan itu, alternatifnya adalah mengunduh file lib dari SourceForge . Tautan akan membawa Anda ke folder file lib dan dll yang di-zip untuk versi 1.51. Namun, Anda harus dapat mengedit tautan untuk menentukan versi pilihan. Tampaknya penginstal dari BoostPro mengalami beberapa masalah.
sumber
Saya mengalami masalah serupa saat mencoba menggunakan pengujian unit pendorong di Visual Studio 2015 (Edisi Komunitas):
jadi saya pikir saya akan membagikan solusi saya.
Anda dapat membuat proyek pengujian unit pendorong dengan dua cara (dan solusi ini berfungsi untuk keduanya):
Berikut adalah langkah-langkah yang saya ikuti untuk membuat kedua proyek berfungsi:
Pertama, unduh versi peningkatan yang diinginkan (misalnya, boost_1_57_0 ). Anda dapat mengunduh boost dengan biner yang benar (dikompilasi menggunakan msvc v140), atau mengekstrak binari sendiri dengan menjalankan perintah berikut dari baris perintah:
Di mana pnidui-14.0 menentukan bahwa kami memerlukan versi Visual Studio 2015 (VS 2015 = v14.0 = v140), dan address-model = 32 menentukan bahwa kami memerlukan platform 32 (tetapi hal yang sama dapat dilakukan untuk 64 bit).
Setelah Anda memiliki binari, masuk ke Visual Studio, pilih proyek Boost Unit Testing yang telah Anda buat. Buka Properti proyek> konfigurasi (dari menu utama) dan buat pilihan berikut:
Setel " General> Platform Toolset " ke Visual Studio 2015 (v140).
Sertakan jalur ke folder peningkatan (misalnya C: \ boost_1_57_0) dan jalur ke subfolder yang berisi file biner (misalnya C: \ boost_1_57_0 \ stage \ lib) di:
sumber
b2 -j% core% toolset =% msvcver% address-model = 64 arsitektur = x86 link = static threading = multi runtime-link = shared --build-type = minimal stage --stagedir = stage / x64
Properti → Linker → Umum → Direktori Perpustakaan Tambahan $ (BOOST) \ stage \ x64 \ lib
sumber
Saya memiliki masalah yang sama yang dilaporkan di sini. Saya memecahkan masalah memindahkan mainTest.cpp dari subfolder src / mainTest / ke folder utama src / Saya rasa ini adalah masalah Anda juga.
sumber
2>LINK : fatal error LNK1104: cannot open file 'libboost_regex-vc120-mt-sgd-1_55.lib
Dalam kasus saya, bootstrap / bjam tidak tersedia (perpustakaan telah dikompilasi sebelumnya dan dikomit ke SCM) pada proyek lama yang diwariskan. Perpustakaan tidak memiliki versi VC atau BOOST dalam nama filenya, misalnya:,
libboost_regex-mt-sgd.lib
bagaimanapunProcessed /DEFAULTLIB:libboost_regex-vc120-mt-sgd-1_55.lib
entah bagaimana dipicu secara otomatis.Diperbaiki dengan menambahkan nama file non-berversi secara manual ke:
<AdditionalDependencies>$(DK_BOOST)\lib64\libboost_regex-mt-sgd.lib</AdditionalDependencies>
dan daftar hitam yang
...vc120-mt-sgd-1_55.lib
di<IgnoreSpecificDefaultLibraries>libboost_regex-vc120-mt-sgd-1_55.lib</IgnoreSpecificDefaultLibraries>
sumber