2011-01-06 29 views
9

BenStatik veya dinamik destek kitaplığım var mı?

bjam.exe --build-dir="C:\build-boost" --build-type=minimal msvc stage ran ve şimdi ben kütüphaneler Bunları ayıklama için statik kütüphaneler olmalı ve sürüm gerektiğine inanıyoruz örnek

libboost_serialization-vc100-mt 
libboost_serialization-vc100-mt-1_45 
libboost_serialization-vc100-mt-gd 
libboost_serialization-vc100-mt-gd-1_45 

için, bu başlıklarıyla .Lib. Derleyiciyi Multi-threaded Debug (/MTd) ile çalıştırdığımda LNK1104: cannot open file 'libboost_serialization-vc100-mt-sgd-1_45.lib' numaralı bir hata veriyor. -sgd

ile ilgili bir sorunum var mı?

+1

Belki de "--build-type = complete" kullanarak oluşturmayı deneyebilirsiniz, çünkü bu kütüphanelerin desteklenen tüm varyantlarını oluşturacaktır http://www.boost.org/doc adresinde "5.3.4" /libs/1_42_0/more/getting_started/windows.html – yasouser

cevap

4

Dinamik sürümleriniz var. Statik olanlar, adında "s" bulunarak sınırlandırılır. bjam komut satırında link=static belirttiğinizden emin olun. Aksi takdirde, statik sürümleri oluşturmak için yeniden oluşturmanız gerekir.

+0

sonunda herhangi bir '.dlls 'vermek varsayalım mı? Ben sadece .libs'i sahne klasörüne aldım. – snoz

+0

@snoz: Yanlış klasöre bakıyorsun o zaman. Windows kutularında, lib'lar, her bir kitaplığın derlemesi tamamlandığında çıktı klasörüne kopyalanan yapı yapıları olarak kabul edilir. Hem dll'leri hem de lib'leri içeren dizinin yerini bulmak zorundasınız. –

2

bunu yıkmak nasıl olduğunu var

libboost_serialization-vc100-mt-SGD-1_45.lib

lib- if boost library starts with lib then its a static library , shared library do not start with lib prefix. Also static library will have a '-s' in the name. 

mt- multi-threaded , obtained by specifying threading=multi when you ran bjam or b2.This is the default threading. 

g- use debug libraries for building the code 
d- build a debug version of your code 

Yani derleyici arıyor-çoklu iş parçacıklı statik/MTd ile çalıştırdığınız gibi hata ayıklama kitaplığı (mt-sgd) (LIBCMTD.lib kullanarak bir hata ayıklama çok iş parçacıklı yürütülebilir dosya oluşturur). Varsayılan olarak statik kitaplığı aramak gerekiyor sanırım. Bir dinamik kitaplık istiyorsanız, kodunuzda bu satırları eklemek veya tür MSVC ile destek oluşturmak için iki 'statik' seçenekler vardır olduğu kafa karıştırıcı bir makro

#define BOOST_ALL_DYN_LINK 
20

şey tanımlar.

B2.exe, BT'yi statik olarak bağlamak istediğinizi belirten link=static numaralı seçeneği kullanır. VC projenizi/MT veya/MTd ile derliyorsanız, VC çalışma zamanı kitaplıklarına statik olarak bağlanacağınızı belirtmek için runtime-link=static seçeneğini de kullanmanız gerekir.

Bu .lib adında -s'yi koyan ikinci runtime-link=static'dur. Bina artışı için

Benim komut satırı

b2.exe --toolset=msvc variant=release link=static threading=multi runtime-link=static stage 
+0

Bu konuda bir sürü sıkıntı yaşıyorum ama sadece bir sürü farklı bağımlılıkla değil, sadece güçle. Bence bunu benim için tıkladın! (3 yıl sonra). –

İlgili konular