Önsöz
artırmak, bu yüzden gözlerimi yapacağım en iyi. Ben statik kütüphane, libfoo.a
olarak derlenmektedir büyük proje ile çalışıyorumözel miras ile hatayı bağlantı ve şu anda bir <a href="https://stackoverflow.com/help/mcve">MCVE</a> içine kıramazlar kod büyük parçasıyla çalışarak
Sorun
. Ayrı bir proje olan bar
, bu kitaplığa karşı bağlantılar.
libfoo
ve
bar
class Base {
public:
void foo(){}
void bar(){}
};
class Derived : private Base {
public:
using Base::foo;
};
boost kapsamlı kullanan şu şekildedir: libfoo
yılında "kusurlu" pasajıdır. bar
o kullanır nedeniyle C++ 11 özelliklerine -std=c++11
ile derlenmiş olması gerekir, ancak libfoo
asgari seçenekleri ile derlenebilir (yani -std=gnu++03
gibi görünen GCC V4.8, kullandığı varsayılan derleyici seçenekleri).-std=c++0x
Benlibfoo.a
derlenmiş bir GCC varsayılan kullanarak -std=c++0x
bar
bağlantı girişiminde bunun için azaltır uzun, ad-parçalanmış uyarı ile başarısız olduğunda: Ne zaman libfoo.a
yeniden inşa
Undefined reference to Base::Derived::foo()
-std=c++11
ile, bu sorun artık oluşmaz.
Çalışma So Far
Ben nm aracılığıyla libfoo.a
çıktısını karşılaştırmış ve her iki durumda da, uygun semboller hazır bulundu. Ayrıca the Cxx11Abi compatibility documents'u da inceledim ve bu derleyici ayarının uyumluluğunu "bozması" gerektiği görünmüyor. nedeni bu bağlayıcı konunun Ne
Soru
mı?
"Minimum ayarlar" ile ne demek istiyorsun? -std = C++ 11 '' -std = C++ 0x' ile aynı olmalıdır! – user463035818
@ tobi303 Bu şekilde, ek derleyici seçenekleri (yani derleyici tarafından varsayılan ayarlar: GCC v4.8.4). – DevNull
sorunu, ortamın taslak için farklı başlıklar ve yayınlanacak 2011 standart – Swift