2013-03-28 14 views
8

Projemdeki XML dosyalarını ayrıştırmak için tinyxml kütüphanesini kullanıyorum.Tinyxml - x64 platformunu hedeflerken bağlantı hataları

Hata 4 hata LNK2001: Burada x64 platformları ben LINKER hataları olsun hedef denemek ve zaman onlardan fo biridir çözülmemiş dış simge "Özel: Statik struct TiXmlString :: Rep TiXmlString :: nullrep_" (? nullrep_ @ TiXmlString @@ 0URep @ 1 Güncelleme

ClassThatUsesTinyXML.obj

) A @: ben tinyxml x64 sürümü yüklü olmadığını anladım ama x64 platformları için kütüphane kurmaya çalıştığında bu hata var :

Bunun yerine x64 platforms için tinyxml bina ve sonra projeye tinyxml.h ve tinystr.h ekleme
+2

Lütfen hataların _all_ kısmını gönderin. En tepede bir yere bahse girerim doğru kütüphaneyi bulamadığını söyleyen bir hatadır. 64 bit kitaplığı yüklediniz mi? –

+0

Hayır Ben yapmadım '. Sadece x64 platformları için tinyxml oluşturmaya çalıştım ama yapamadım. Hata ' hata LNK1561: Burada tinyxml oluştururken aldığım hatadır giriş noktası \t yolunu tanımlanmış olmalıdır \ tinyxml_2_6_2 \ tinyxml \ LİNK ' – Kira

+0

@JoachimPileborg tam olarak derleme Ne benim güncelleştirme – Kira

cevap

5

, sadece .cpp dosyaları dahil tüm kütüphane dosyaları eklendi ve şimdi ben ne zaman, kütüphane, aslında, inşa ediliyor x64 platformları hedefleyebilir tüm projeyi inşa et.

+2

Bu aslında tinyxml paylaşılan kütüphanesini kullanmaz - sadece çirkin statik bağlantı şeklidir. Eğer tinyxml'in yeni sürümünü kullanmak istiyorsanız, uygulamanızı yeniden derlemeniz gerekeceğini unutmayın (ancak yine de sık sık değişiyor mu?) –

3

Paylaşılan kitaplık kutusundan oluşturulmuş tinyxml destekleri gibi görünmüyor. İşte

Ben tinyxml 2.6.2 kaynaklardan bir DLL oluşturmak için izlenen adımlar şunlardır:
  1. Açık Windows Desktop için MS Visual Studio Express 2012 sağlanan SLN dosya, tinyxml.sln. İstendiğinde eski proje dosyalarını yeni formata dönüştürmek için seçim yapın. "Çözüm Platformları" Dan
  2. , "Configuration Manager ..." seçeneğini
  3. itibaren "Aktif çözüm platformu:" select "< Yeni ... >" olarak
  4. "Tür veya yeni bir platform seçin:" seçmek Henüz seçilmemişse "x64". "Win32" yapılandırmasından ayarları kopyaladığınızdan emin olun. Tamam'a tıklayın. Configuration Manager'dan çıkmak için Kapat'a tıklayın.
  5. Solution Explorer'da tinyxml projesine sağ tıklayın. "Özellikler" i seçin.
  6. "Yapılandırma:" için "Tüm Yapılandırmalar" ı seçin. Benzer şekilde, "Platform:" için "Tüm Platformlar" ı seçin.
  7. Yapılandırma Özellikleri → Genel sayfasında, "Yapılandırma Türü" ni "Dinamik Kitaplık (.dll)" olarak değiştirin. Hedef Uzantısını ".dll" olarak değiştirin. Tinyxml Özellikler Sayfaları iletişim kutusundan çıkmak için Tamam'a tıklayın.
  8. "Serbest Bırak" yapılandırmasını ve "x64" platformunu seçin.
  9. Yeniden Çözüm Gezgini'nde tinyxml projesine tekrar sağ tıklayın ve "Yeniden Oluştur" u seçin. tinyxml_2_6_2\tinyxml\x64\Release içinde

Eğer tinyxml.dll bulacaksınız, ancak hiçbir alma kitaplığı (tinyxml.lib). Bunun nedeni sembollerin verilmemesidir. Bkz. How do I build an import library (.lib) AND a DLL in Visual C++?

Paylaşılan kitaplık yoluna gitmek isterseniz, MSVC'ye özel __declspec(dllexport) değiştiricisiyle istenen sembolleri vermeniz gerekir. Bakınız Symbol Visibility in Windows.

1

Kitaplığın derlenmesi için TIXML_USE_STL'yi tanımladığınızda, ancak kitaplığa bağlanan kaynaklar için hata oluştuğunda hatalar oluşur.Sonuç, kütüphanenin kütüphaneyi kullanan kaynaklardan farklı kodlarla derlenmesidir.

İlgili konular