100

次のエラーが発生します。

libxml/tree.h そのようなファイルまたはディレクトリはありません

すでにlibxml2.dylibプロジェクトに追加しましたが、この種の問題が発生しています。私を助けてください。

4

22 に答える 22

86

Xcode 4.3 / 5 / 6にlibxml2を追加

libxml2 を追加することは、お尻の大きな、太い、厄介な苦痛です。それを行う場合は、プロジェクトの構築に行き過ぎる前に実行してください。


次の 2 つの方法で追加する必要があります。

1.ターゲット設定

ターゲット (プロジェクトではない) をクリックし、 を選択しますBuild Phases

というタイトルの表示三角形をクリックしLink Binary With Librariesます。をクリックして+ライブラリを追加します。

リストの一番下までスクロールし、 を選択しますlibxml2.dylib。これにより、libxml2 ライブラリがプロジェクトに追加されます。

2. プロジェクトの設定

ここで、プロジェクトに検索する場所をあと3回指定する必要があります。

を選択しBuild Settings tabます。

セクションまでスクロールしLinkingます。プロジェクトの列の下で、行をダブルクリックしますOther Linker Flags。をクリックしてリスト+に追加-lxml2します。

一層。

同じタブで、セクションまでスクロールしますSearch Paths

行のプロジェクト列の下に をFramework Search Paths追加し/usr/lib/libxml2.dylibます。

と行にHeader Search Paths User Header Search Paths追加し$(SDKROOT)/usr/include/libxml2ます。

最後の 2 つのケースでは、DebugRelease にパスが入力されていることを確認してください。

3. きれいにする

Productメニューの下でを選択しますClean

そして、もし私があなただったら (正直に言うと、私はおそらくそうです)、Xcode をやめて立ち去ります。戻ってきて起動すると、準備完了です。

于 2012-06-05T20:14:02.093 に答える
22

Xcode 6 の場合、次のことを行う必要がありました。

1) "libxml2.dylib" ライブラリをプロジェクトの TARGET に追加します (ビルド フェーズ -> バイナリをライブラリにリンク)。

2) TARGET のヘッダー検索パスに「$(SDKROOT)/usr/include/libxml2」を追加します (ビルド設定 -> ヘッダー検索パス)。

この後、ターゲットは正常にビルドされます。

于 2014-09-12T18:16:42.370 に答える
19

/usr/include/libxml2また、インクルード パスに追加する必要があります。

于 2009-09-15T18:23:54.737 に答える
11

Ray Wenderlich は、こ​​の問題を解決する gdata の使用に関するブログ投稿を行っています。基本的にこれらの簡単な手順:

XCode で、Project\Edit Project Settings をクリックし、[All Configurations] がオンになっていることを確認します。

Search Paths\Header Search Paths 設定を見つけて、リストに /usr/include/libxml2 を追加します。

最後に、Linking\Other Linker Flags セクションを見つけて、リストに -lxml2 を追加します。

元の投稿: gdataxml を使用して xml ドキュメントを読み書きする

于 2011-02-02T02:31:43.867 に答える
11

@Matt Ball のリンクを形成し、

以下が役に立ちました。

libxml2.dylib をプロジェクトに追加する必要があります (フレームワーク セクションには入れないでください)。Mac では/usr/lib/libxml2.dylib、iPhone の場合は/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/usr/lib/libxml2.dylibバージョンが必要になります。

libxml2 は .dylib (親しみやすい .framework ではありません) であるため、まだやるべきことがあります。プロジェクトのビルド設定 ( Project->Edit Project Settings->Build) に移動し、「 」を見つけますSearch Paths。「ヘッダー検索パス」に、Mac で次のパスを追加します。

 /usr/include/libxml2 
于 2009-09-15T18:24:45.580 に答える
7

同じことがわかりました。最新の Xcode (4.3.x) には $(SDKROOT)/usr/include/libxml2 を追加する必要がありました。また、「PROJECT」ではなく「TARGET」を変更していたという事実もありました (Xcode の新しい UI は非常に複雑であるため、見落としがちです)。プロジェクトを変更する必要があります!

于 2012-04-27T21:59:44.940 に答える
5

別の解決策。ヘッダー検索パスなどのすべての手順を実行し、プロジェクト設定のプロジェクトで選択した構成が正しいものであることを確認します。プロジェクトビルド設定をダブルクリックすると、配布設定が変更されている可能性がありますが、「デバッグ」設定にヘッダー検索パスを追加しようとしています。したがって、正しい設定になっていることを確認してください。またはすべての設定を選択します

于 2010-07-25T15:04:43.687 に答える
4

Mavericks (OS X 10.9) 以降、/usr/include ディレクトリはなくなりました。インクルードディレクトリを整理するまでアプリケーションはコンパイルされないため、ここでの回答の半分は時代遅れです。

次のコマンドを使用して、ターミナルで MacOSX SDK へのシンボリック リンクを作成する問題を解決しました。

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

アプリケーションが再びコンパイルされるようになりました。

于 2013-11-13T10:19:54.670 に答える
4

xCode 4.3.2 では、単純に /usr/include/libxml2 ではなく、ヘッダー検索フィールドに $(SDKROOT)/usr/include/libxml2 を入力する必要があることがわかりました。

于 2012-04-08T21:15:20.597 に答える
3

違いはわかりませんが、ターゲットだけでなくプロジェクトにもインクルード パスを追加してください。

于 2011-01-29T06:38:00.177 に答える
3

Mountain Lion では、同じ問題に直面していました。これは/usr/include/libxml2、フラグ「再帰」を含むパスを追加することで解決されました。上記のすべてが実りがない場合は、これを使用してください。

于 2013-01-21T11:04:05.440 に答える
2

Xcode4.5CWのソリューションを完全に使用しました。唯一の例外は、$(SDKROOT)/ usr / include / libxml2が機能せず 、プロジェクトヘッダー検索パスユーザーヘッダー検索パスに「$(SDK_DIR)」/ usr / include/libxml2を追加する必要があったことです。 。その後、プロジェクトは正常にビルドされます。

編集:プロジェクト内にGoogle GDataプロジェクト(MyProjectと呼ばれる)があります(私のプロジェクトでは使用しています)。GDataにはlibxmlが必要です。プロジェクトMyProjectを正常にビルドするには、 「$(SDK_DIR)」/ usr / include / libxml2をMyProjectのヘッダー検索パスに追加し、GDataのヘッダー検索パスには追加しません。MyProjectに追加しなかった場合、プロジェクトはビルドされませんでした)。

于 2012-10-01T09:11:12.270 に答える
2

また、[常にユーザー パスを検索する] を [はい] に選択します。XCode 4.3.3 では、デフォルトで NO

于 2012-06-24T05:32:49.380 に答える
2

この視覚的なチュートリアルは役に立ちました。

于 2012-11-01T22:34:36.500 に答える
2

Snow Leopard と XCode 3.2 にアップグレードした後、プロジェクト (Leopard 上の XCode 3.something で開発された) を再度開いたときに、この問題が発生しました。興味深いことに、これは一部の種類のビルドにのみ影響を与えました (エミュレータ ビルドは問題なく動作し、デバイス ビルドはエラーを出しました)。また、/usr/include に libxml2 があり、実際に libxml/tree.h が含まれています。

魔法の「Clean」でさえ機能しませんでした、「XCode」メニュー (Apple ロゴとファイルの間) の下にある「Empty Caches...」でうまくいきました (そのメニューは以前のバージョンにありましたか?)。理由はわかりませんが、クリーンの後、libxml/tree.hに関する苦情はなくなりました

于 2009-11-30T14:11:55.723 に答える
2

次の手順に従ってください

  1. libxml2 の追加
    libxml2.dylib は、Mac マシンの /usr/lib/libxml2.dylib にあります。

  2. 「ヘッダー検索パス」を変更
    します [プロジェクト名] (左側のパネル) をクリックします -> プロジェクト -> ビルド設定 -> すべてを選択 (デフォルトは基本)
    検索ボックスにヘッダー検索パスを入力します ヘッダー検索パスを
    ダブルクリックします -> + - > "$(SDKROOT)/usr/include/libxml2"

  3. 「その他のリンカー フラグ」に -lxml2 を追加
    手順 2 の検索で「その他のリンカー フラグ」を検索し
    、「その他のリンカー フラグ」の行をクリックします。「+」をクリックして、「-lxml2」をリストに追加します。

  4. プロジェクトタイプをARCに変更します->いいえ、つまり自動参照カウントをいいえにしますステップ2に従ってARCを検索できます

于 2012-07-04T09:28:39.473 に答える
1

@Aqib Mumtaz - 上記の「Xcode 4.3 / 5 / 6 に libxml2 を追加する」というタイトルの Parris のメモの指示に従って動作させました。フレームワークの検索パスを使用する手順が機能せず、コンパイラが文句を言います。とにかく、その男に大きな称賛を!

Xcode 6.2b3 を使用しています

使用している Xcode のバージョンに関係なく、バグがあります。コンパイル エラーが実際のものであると常に想定しないでください。ヘッダー検索パスをたどらず、明確にリストされたインクルードが見つからない場合がよくあります。さらに悪いことに、結果として発生するエラーは、さまざまな方向を指し示す傾向があるため、気を散らすもので多くの時間を無駄にします. とは言うものの...

これを正確に開始することにより、ベイビーステップをお勧めします...:

  1. 「Bench Test」という単一ウィンドウの Mac OS X Cocoa プロジェクトを作成する
  2. Finder で XpathQuery をプロジェクト ソース ディレクトリに直接追加します。
  3. プロジェクト ウィンドウの赤い閉じるボタンの下にある小さなフォルダ アイコンをクリックします。
  4. XpathQuery (含まれている場合はフォルダー) を、プロジェクト ウィンドウのディスプレイの左側にあるプロジェクト アセットにドラッグします。
  5. /Applications/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib/libxml2.2.dylib をプロジェクト アセットの下部にドラッグします。これにより、「ビルドフェーズ」->「バイナリをライブラリにリンク」に簡単に追加されます
  6. 左上のプロジェクト アセット列にある "Bench Test" プロジェクト アイコンをクリックします。
  7. 「ビルド設定」の下で「その他のリンカーフラグ」を検索します
  8. "Bench Test" プロジェクト アイコン列の下の "Other Linker Flags" に "-lxml2" (sans "") を追加します
  9. 「ビルド設定」の下で「ヘッダー検索」を検索します
  10. "Bench Test" プロジェクト アイコン列の下の "Header Search Paths" に "$(SDKROOT)/usr/include/libxml2" (sans "") を追加します
  11. "Bench Test" プロジェクト アイコン列の下の "User Header Search Paths" に "$(SDKROOT)/usr/include/libxml2" (sans "") を追加します

ノート:

  • その検索パスを「ヘッダー検索パス」と「ユーザーヘッダー検索パス」の両方に追加するまで、私のものは機能しません。
  • ファインダーで libxml2.2.dylib にアクセスするには、Xcode アイコンを右クリックし、[パッケージの連絡先を表示] を選択する必要があります (編集者: なんというハック.. そのゴミをすべてアプリに詰め込む)
  • リンクされた libxml2.2.dylib を変更する準備をしてください。Xcode 内のものは、Xcode が知っている何かを確実に取得するために意図的に使用され、理論上はテスト済みです。後でシステムでdylibを使用したい場合があります(このスレッドを読んでください)
  • Xcode 6.2b3 を使用しているため、新しい libxml2.2.dylib を使用している可能性があります。あなたの名前は少し違うかもしれません。「libxml」で始まり「.dylib」で終わるものをフォルダーで検索するだけです。「libxml2.dylib」のようなエイリアスがある場合もあります。エイリアスを解決すると、別の変数が Xcode の「バグがある可能性がある」式に追加されるため、すぐに使用しないでください。
  • 正気を保つために、外部ライブラリのエイリアスを作成し、それらがどれであるかを示すように名前を変更し、Finder でプロジェクト ファイルと同じレベルに保ちます。彼らが場所を変更したり、名前を変更したりした場合、エイリアスには Get Info が含まれます。これは、プロジェクトのコンパイルとリンクを再度取得するための、後で検出作業を行うための元のファイルのフル パスです。(シンボリックリンクは壊れやすく、Mac にとって自然ではありません)
  • 最後に、非常に重要なことですが、 http://www.cocoawithlove.com/2008/10/using-libxml2-for-parsing-and-xpath.htmlを参照してください。XpathQuery をダウンロードして、さらに優れた機能を入手できます。

お役に立てれば。

たまたま退役軍人向けの何かを開発していて、たとえば iPhone / iPad または Mac アプリを開発していて、医療記録システムへの SOAP ベースのインターフェースである「MDWS」または「VIA」と呼ばれるものに取り組んでいる場合は、私に連絡してください。

于 2015-01-04T14:15:08.387 に答える
1

libxml2.dylib を Frameworks フォルダーの下に配置しないでください。ルートのすぐ下に配置します (左上の青いアイコン)。

次に、プロジェクト(左上の青いアイコン)をクリックし、ビルド設定に移動し、検索ボックスに「ヘッダー検索パス」と入力して、この「$(SDKROOT)/usr/include/libxml2」を追加します

このコードは私の問題を解決し、これを修正するのに役立つことを願っています

于 2014-03-13T07:46:08.813 に答える
0

Xcode 8.0 + Unit Test Projectで3つのステップで解決しました

1)ビルドフェーズにlibxmlファイルを追加しました。このリンクをたどってください

2)その他のリンカーフラグを追加しました-ObjC(プロジェクトとテストプロジェクトの両方のターゲット用)

3)ヘッダー検索パスを次のように設定します"${SDKROOT}/usr/include/libxml2"(どちらの側でも二重引用符を忘れないでください)(プロジェクトとテストプロジェクトの両方のターゲットに対して)

それらのうちの1つが問題を解決します。そうでない場合は、上記の 3 つすべてを適用する必要があります。

于 2016-12-08T06:05:41.353 に答える