libxml / tree.h böyle bir dosya veya dizin yok


100

Aşağıdaki hataları alıyorum.

libxml / tree.h böyle bir dosya veya dizin yok

Projeme zaten ekledim libxml2.dylib, ancak bu tür sorunlar yaşıyorum. Lütfen bana yardım et.


2
Bunu zaten projenize eklediğinizi söylediğinizde, tam olarak ne yaptınız? XCode'un işe yaradığını düşündüğünü sanmıyorum.
Devin Ceartas

1
XCode 4.6'da bu sorunu yaşıyorsanız, buraya gidin stackoverflow.com/questions/14622684/…
Boris Gafurov

Ekran görüntünüzü güncelleyin.
Kullanıcı

Yanıtlar:


214

Buradaki "Proje dosyanızı oluşturma" altındaki talimatları izleyin .

Proje dosyanızı oluşturma

Projenize libxml2.dylib eklemeniz gerekir (bunu Çerçeveler bölümüne koymayın). Mac'te, onu adresinde bulacaksınız /usr/lib/libxml2.dylibve iPhone için /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk/usr/lib/libxml2.dylib sürümü isteyeceksiniz .

Libxml2 bir .dylib olduğu için (kolay bir .framework değil) yapmamız gereken bir şey daha var. Proje oluşturma ayarlarına gidin (Proje-> Proje Ayarlarını Düzenle-> Oluştur) ve "Arama Yolları" nı bulun. "Başlık Arama Yolları" nda aşağıdaki yolu ekleyin:

$(SDKROOT)/usr/include/libxml2

Ayrıca OP'nin cevabına bakın .


12
Üstbilgi Arama Yoluna "/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/usr/include/libxml2" ifadesini eklemenizi istediğinde bunu yapmayın. Bunun yerine "/ usr / include / libxml2 ekleyin. Bu, projenizi belirli
SDK'lardan

Bu, içinde gerçekten bir sembolik bağlantı olduğu sürece işe yarar /usr/include. Libxml2'yi yüklemeyi denemedim, bu yüzden varsayılan davranışı onaylayamıyorum. Ama evet, onu bu şekilde bağlamak çok daha iyi.
Matt Ball

1
XCode altında geliştirme yaparken GCC, SDK'nın kökünü yeniden konumlandıran -isysroot seçeneğini kullanır. Başlık arama yollarına / usr / include / libxml2 eklerseniz, derleme sırasında mevcut SDK İÇİNDE usr / include / libxml2 klasörüne çevrilecektir.
Laurent Etiemble

Bu "$ (SDKROOT) / usr / include / libxml2" yi Başlık Arama Yoluna (XCode 4.2) ayarladığımda, "_OBJC_METACLASS _ $ _ UIResponder" yazıyorsa, MyDemoAppDelegate içinde _OBJC_METACLASS _ $ _ D2GAppDelegate: symbol. i386 "mimarisi için bulunamadı. Ne yapabilirim?
NicTesla

1
Harika. Teşekkürler. sorun yaratan '$ (SDKROOT)' eksikti.

86

Xcode 4.3 / 5 / 6'ya libxml2 ekleme

Libxml2 eklemek büyük, şişman, titiz bir baş belasıdır. Bunu yapacaksanız, projenizi oluşturmada çok ileri gitmeden önce yapın.


İki şekilde eklemeniz gerekir :

1. Hedef ayarları

Hedefinize (projenize değil) tıklayın ve seçin Build Phases.

Başlıklı üçgeni tıklayın Link Binary With Libraries. +Kitaplık eklemek için üzerine tıklayın .

Listenin en altına gidin ve seçin libxml2.dylib. Bu, libxml2 kitaplığını projenize ekler.

2. Proje ayarları

Şimdi projenize onu nerede arayacağınızı üç kez daha söylemelisiniz .

Seçin Build Settings tab.

Bölüme ilerleyin Linking. Projelerinizin sütunlarının altındaki satıra çift tıklayın Other Linker Flags. Tıklayın +ve -lxml2listeye ekleyin .

Hala fazla.

Aynı sekmede, Search Pathsbölüme ilerleyin .

Framework Search PathsSatırdaki projeler sütununuzun altına ekleyin /usr/lib/libxml2.dylib.

Gelen Header Search Paths veUser Header Search Paths satır ekleme $(SDKROOT)/usr/include/libxml2.

Bu son iki durumda, yolun Hata Ayıklama ve Yayınlama'ya girildiğinden emin olun .

3. Temizleyin

ProductMenü altında seçin Clean.

Sonra, senin yerinde olsam (ve bununla yüzleşelim, muhtemelen öyleyim) Xcode'u bırakıp uzaklaşırdım. Geri dönüp fırlattığınızda, gitmekte iyi olmalısınız.


Teşekkürler, bu benim için Xcode 4.3.3 ile çalışan tek çözümdü
lifjoy

1
Bu adım adım talimatlar benim için bir kez işe yarayan tek talimattı (Xcode 4.4.1). Teşekkürler!
Frank

Xcode 4.1.1'de Çerçeve arama yollarını ayarlamadan benim için çalıştı
Richard Garside

1
opening import file 'Swift.swift': Not a directorybunu Xcode 5'te yaptıktan sonra
Kullanıcı

1
Ayrıca "'Swift' modülü için içe aktarma dosyasını açma: Bir dizin değil" hatasını aldım. Bunu düzeltmek için "/usr/lib/libxml2.dylib" 'i "Çerçeve Arama Yolları" na eklemeyin. O adımı görmezden geldikten sonra hala benim için çalıştı.
Daniel Ryan

22

Xcode 6 için aşağıdakileri yapmam gerekiyordu:

1) "libxml2.dylib" kitaplığını projemin HEDEFİNE ekle (Derleme Aşamaları -> Kitaplıklarla İkili Bağla)

2) HEDEF’teki Başlık Arama Yollarına "$ (SDKROOT) / usr / include / libxml2" ekleyin (Derleme Ayarları -> Başlık Arama Yolları)

Bundan sonra, hedef başarıyla inşa edilmelidir.


Proje ayarlarında / usr / include / libxml2'nin çalışmaması için herhangi bir neden var mı?
Paul Brewczynski


11

@Matt Ball bağlantısını oluşturun,

Aşağıdakileri bana yardımcı buldum.

Projenize libxml2.dylib eklemeniz gerekir (bunu Çerçeveler bölümüne koymayın). Mac'te, onu adresinde bulacaksınız /usr/lib/libxml2.dylibve iPhone için /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/usr/lib/libxml2.dylibsürümü isteyeceksiniz .

Libxml2 bir .dylib olduğu için (kolay bir .framework değil) yapmamız gereken bir şey daha var. Proje oluşturma ayarlarına ( Project->Edit Project Settings->Build) gidin ve " Search Paths" öğesini bulun . "Başlık Arama Yolları" na Mac’te aşağıdaki yolu ekleyin:

 /usr/include/libxml2 

11

Ray Wenderlich'in bu sorunu çözen gdata kullanımı hakkında bir blog yazısı var. Temel olarak şu basit adımlar:

XCode'da Proje \ Proje Ayarlarını Düzenle'ye tıklayın ve "Tüm Yapılandırmalar" ın işaretlendiğinden emin olun.

Arama Yolları \ Başlık Arama Yolları ayarını bulun ve listeye / usr / include / libxml2 ekleyin.

Son olarak, Linking \ Other Linker Flags bölümünü bulun ve listeye -lxml2 ekleyin.

orijinal gönderi: gdataxml ile xml belgelerini okuyun ve yazın


2
Bu cevabı birçok yerde buldum, ancak hepsi bunun hedefte değil projede Header arama yolu olduğunu söylemeyi unuttu. Doğru şekilde açıkladığınız için çok teşekkürler.
esbenr

7

Aynı şeyi buldum, en son Xcode (4.3.x) için $ (SDKROOT) / usr / include / libxml2 eklemek zorunda kaldım. AYRICA, saatlerce etrafta dolaşmamı sağlayan şey, "PROJE" yerine "HEDEF" i değiştiriyor olmamdı (Xcode'un yeni kullanıcı arabirimi o kadar karmaşık ki, bunu gözden kaçırmak kolay). PROJEYİ değiştirmeniz gerekiyor!


5

Başka bir çözüm. başlık arama yolundaki vb. tüm adımları uygulayın ve Proje ayarlarında projede seçtiğiniz yapılandırmanın doğru olduğundan emin olun. Proje derleme ayarlarına çift tıkladığınızda, Dağıtım ayarlarında değişiyor olabilirsiniz, ancak "Hata Ayıklama" ayarlarında başlık arama yolu eklemeye çalışıyorsunuz. Bu yüzden doğru ayarlarda olduğunuzdan emin olun. veya tüm ayarları seçin


4

XCode 4.3.2 ile Header Search alanına $ (SDKROOT) / usr / include / libxml2'yi / usr / include / libxml2 yerine basitçe girmem gerektiğini öğrendim


4

Mavericks'ten (OS X 10.9) itibaren / usr / include dizini gitmiştir . Siz dahil etme dizinini çözene kadar uygulama derlenmeyeceğinden, buradaki yanıtların yarısı geçersizdir.

Aşağıdaki komutu kullanarak terminalde MacOSX SDK'ya sembolik bir bağlantı oluşturma sorununu çözdüm:

sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include /usr/include

Uygulama şimdi yeniden derleniyor.


Tam olarak aradığım şey. Bu mükemmel çalışıyor. Başlık arama yollarınıza / usr / include / libxml2
Josh Bernfeld'i 14'14

3

Aradaki farkın ne olduğundan emin değilim, ancak hedefin yanı sıra projeye dahil etme yolunu ekleyin.


3

Mountain Lion'da ben de aynı sorunla karşılaşıyordum, bu sorun /usr/include/libxml2"özyinelemeli" bayraklı yolları dahil ederek çözüldü , yukarıdakilerin tümü verimli değilse bunu kullanın.


2

Snow Leopard ve XCode 3.2'ye yükselttikten sonra bir projeyi (Leopard üzerinde XCode 3.something üzerinde geliştirilen) yeniden açtığımda bu sorunu yaşadım. Yeterince meraklıydı, yalnızca bazı yapı türlerini etkiledi (emülatör yapıları iyi gitti, aygıtlar bana hatayı verdi). Ve / usr / include dizininde libxml2 var ve gerçekten libxml / tree.h içeriyor.

Sihirli "Temizle" bile işe yaramadı, ancak "XCode" menüsünün altındaki "Önbellekleri Boşalt ..." (Apple logosu ile Dosya arasında) hile yaptı (bu menü önceki sürümlerde miydi?). Nedeni beni yener, ancak temizlemeden sonra libxml / tree.h ile ilgili başka şikayet olmadı


2

Ayrıca EVET olarak "Her Zaman Kullanıcı Yollarını Ara" seçeneğini seçin. XCode 4.3.3'te varsayılan olarak HAYIR


2

Lütfen aşağıdaki adımları izleyin


  1. Libxml2 libxml2.dylib eklenmesi mac makinenizde /usr/lib/libxml2.dylib adresinde bulunabilir.

  2. "Başlık Arama Yollarını" değiştirin
    [Proje Adı] ' nı tıklayın (sol panelde) -> Proje -> Yapı Ayarları -> Tümünü Seç (varsayılan
    Temel'dir) Arama kutusuna Başlık Arama Yollarını yazın Üstbilgi Arama Yollarına
    çift ​​tıklayın -> + - > "$ (SDKROOT) / usr / include / libxml2"


  3. "Diğer Bağlayıcı Bayrakları" na -lxml2 ekleyin . "Diğer Bağlayıcı Bayrakları" nı arayın, 2. adımda
    "Diğer Bağlayıcı Bayrakları" satırına tıklayın. "+" İşaretini tıklayın ve listeye "-lxml2" ekleyin.

  4. Proje tipinizi ARC olarak değiştirin -> Hayır yani Otomatik Referans Sayma Hayır olarak 2. adımdaki gibi ARC'de arama yapabilirsiniz.


2

Xcode 4.5 CW'nin çözümünü tamamen kullandım. Bunun tek istisnası $ (SDKROOT) / usr / include / libxml2'nin benim için çalışmaması ve Projeler Üstbilgi Arama Yollarıma ve Kullanıcı Başlığı Arama Yollarıma "$ (SDK_DIR)" / usr / include / libxml2'yi eklemem gerektiğidir. . Bu proje başarıyla kurulduktan sonra.

DÜZENLEME: Projemin içinde Google GData projem var (Projem olarak adlandırılır) (projem kullanır). GData, libxml gerektirir. Projem'i başarılı bir şekilde oluşturmak için, Projemin Başlık Arama Yollarına "$ (SDK_DIR)" / usr / include / libxml2 ekliyorum ve GData'nın Başlık Arama Yollarına eklemiyorum . MyProject'e eklemediysem, proje oluşturulmadı ).



1

Blockquote Xcode 4.3.x'e libxml2 ekleme

Libxml2 eklemek büyük, şişman, titiz bir baş belasıdır. Eğer bunu yapacaksanız, projenizi oluşturmada çok ileri gitmeden önce yapın.

Nasıl yapacağınız burada.

Hedef ayarları

Hedefinize (projenize değil) tıklayın ve "Aşamaları Oluştur" u seçin. "İkili Dosyayı Kitaplıklarla Bağla" başlıklı gösterme üçgenine tıklayın. Bir kitaplık eklemek için "+" işaretine tıklayın. Listenin en altına gidin ve "libxml2.dylib" i seçin. Bu, projenize libxml2 kitaplığını 2 ekler… ama bekleyin.

Proje ayarları

Şimdi projenize onu nerede arayacağınızı üç kez daha söylemelisiniz.

"Yapı Ayarları sekmesini" seçin. "Bağlantı" bölümüne ilerleyin. Projenizin sütunlarının altında "Diğer Bağlayıcı Bayrakları" satırına çift tıklayın. "+" İşaretini tıklayın ve listeye "-lxml2" ekleyin.

Hala fazla.

Aynı sekmede, "Arama Yolları" bölümüne gidin. Projenizin "Çerçeve Arama Yolları" satırındaki sütununun altına "/usr/lib/libxml2.dylib" ekleyin.

"Başlık Arama Yolları" VE "Kullanıcı Başlığı Arama Yolları" satırına "$ (SDKROOT) / usr / include / libxml2" ekleyin. Bu son iki durumda, yolun Hata Ayıklama VE Yayınlama'ya girildiğinden emin olun.

Sonra. "Ürün" Menüsü altında "Temizle" yi seçin.

Bu çalışıyor ve Xcode5 için de! Teşekkür ederim!


1
Bu, Xcode 5.0.2'de çalışmıyor. Projemde yukarıdaki değişiklikleri yaptım ama şansım yok. Yapılması gerekeni bana yardım edebilir misin?
Ganesh

1

Libxml2.dylib'i çerçeveler klasörünün altına koymayın, kökün hemen altına koyun (Sol üst mavi simge)

Ardından Projeye tıklayın (ÜST Sol mavi simge), Yapı Ayarlarına gidin, arama kutusuna "Başlık Arama Yolları" yazın ve ardından bu "$ (SDKROOT) / usr / include / libxml2" öğesini ekleyin

Bu kod sorunumu çözer umarım bunu düzeltmenize yardımcı olur


1

@Aqib Mumtaz - Parris'in yukarıdaki "Xcode 4.3 / 5 / 6'ya libxml2 ekleniyor" başlıklı notundaki talimatları izleyerek çalıştırdım. Çerçeve Arama Yolu kullanma adımı çalışmaz ve derleyici şikayet eder. O adama büyük şükürler olsun!

Xcode 6.2b3 kullanıyorum

Kullandığınız Xcode sürümünden bağımsız olarak, buggy. Her zaman derleme hatalarının gerçek olduğunu varsaymayın. Üstbilgi arama yollarını takip etmediği ve açıkça listelenen içeriklerin bulunamadığı birçok kez vardır. Daha da kötüsü, ortaya çıkan hatalar sizi farklı yönlere yöneltme eğilimindedir, bu nedenle dikkat dağıtıcı şeylerle uğraşarak çok fazla zaman harcarsınız. Bu sözü edilen...

Tam olarak bununla başlayarak bebek adımlarını önerin ...:

  1. "Karşılaştırmalı Test" adlı tek pencereli Mac OS X Cocoa projesi oluşturun
  2. XpathQuery'yi proje kaynak dizininize doğrudan Finder'da ekleyin
  3. proje penceresinin kırmızı kapat düğmesinin altındaki küçük klasör simgesine tıklayın
  4. XpathQuery'yi (içerdiyseniz klasör) proje penceresi ekranının solundaki proje varlıklarına sürükleyin
  5. /Applications/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib/libxml2.2.dylib'i en alttaki proje varlıklarınıza sürükleyin. Bu, onu "Derleme Aşamalarına" -> "İkili Dosyayı Kitaplıklarla Bağla" na kolay bir şekilde ekleyecektir.
  6. sol üstteki proje varlıkları sütunundaki "Karşılaştırmalı Test" proje simgesine tıklayın
  7. "Derleme Ayarları" altında "Diğer Bağlayıcı Bayrakları" nı arayın
  8. "Karşılaştırmalı Test" proje simgesi sütununun altındaki "Diğer Bağlayıcı Bayrakları" na "-lxml2" (sans "") ekleyin
  9. "Yapı Ayarları" altında "başlık araması" araması yapın
  10. "Karşılaştırmalı Test" proje simgesi sütununun altındaki "Başlık Arama Yolları" na "$ (SDKROOT) / usr / include / libxml2" (sans "") ekleyin
  11. "Karşılaştırmalı Test" proje simgesi sütununun altındaki "Kullanıcı Başlığı Arama Yolları" na "$ (SDKROOT) / usr / include / libxml2" (sans "") ekleyin

Notlar:

  • Bu arama yolunu hem "Başlık Arama Yolları" hem de "Kullanıcı Başlığı Arama Yolları" na ekleyene kadar benimki çalışmayacak.
  • Bulucuda libxml2.2.dylib'e ulaşmak için, Xcode simgenizi sağ tıklamanız ve "Paket Kişilerini Göster" i seçmeniz gerekir (editör: ne bir hack .. tüm bu çöpleri uygulamaya sıkıştırmak)
  • Bağlantılı libxml2.2.dylib'i değiştirmeye hazır olun. Bir Xcode içine kasıtlı Xcode o test edildi hakkında ve teoride bilmediği bir şey almaya devam etmesini sağlamak için kullanılır. Dylib'i daha sonra sistemde kullanmak isteyebilirsiniz (bu konu başlığında okuyun)
  • Xcode 6.2b3 kullandığım için daha yeni bir libxml2.2.dylib'im olabilir. Sizinki biraz farklı adlandırılabilir. Klasörde "libxml" ile başlayan ve ".dylib" ile biten bir şey arayın ve bu olmalı. "Libxml2.dylib" gibi bir takma ad da olabilir. Bunu hemen kullanmayın, çünkü bir takma adı çözmek Xcode "neyin hatalar olabileceği" denklemine başka bir değişken ekler.
  • Akıl sağlığı için, harici kitaplıkların takma adlarını oluşturuyorum, hangisi olduklarını belirtmek için onları yeniden adlandırıyorum ve Finder'daki proje dosyasıyla aynı düzeyde tutuyorum. Konum değiştirirlerse, adı değiştirirlerse, vb. Takma ad, projenin derlenmesini ve yeniden bağlanmasını sağlamak için daha sonraki dedektif çalışma için orijinal dosyanın tam yolu olan Get Info'da yer alır. (sembolik bağlantılar çok kolay kopar ve Mac için doğal değildir)
  • Son ve çok önemli olan şey, XpathQuery'yi indirebileceğiniz ve biraz daha fazla iyilik elde edebileceğiniz http://www.cocoawithlove.com/2008/10/using-libxml2-for-parsing-and-xpath.html adresine bakın .

Bu yardımcı olur umarım.

Gaziler için bir şey geliştiriyorsanız, bir iPhone / iPad veya Mac uygulaması deyin ve tıbbi kayıt sistemine SABUN tabanlı arayüzler olan "MDWS" veya "VIA" adlı bir şeye karşı çalışıyorsanız ... lütfen benimle iletişime geçin


0

Xcode 8.0 + Unit Test Project'te üç adımda çözdüm

1) Derleme Aşamalarına libxml dosyası ekledim. Bu bağlantıyı takip edin

2) eklenmiş Diğer Bağlayıcı Flags olarak -ObjC(hem proje ve test proje hedefleri için)

3) kurulum Başlık Arama Yolu olarak "${SDKROOT}/usr/include/libxml2"(her iki tarafında çift tırnak unutmayın) (hem proje ve test proje hedefleri için)

Bunlardan biri sorunu çözecek. Değilse, yukarıdakilerin üçünü de uygulamanız gerekir.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.