0

Xamarin で単純なバインド プロジェクトを作成しました。バインディング プロジェクトは静的ライブラリをインポートしますMyLibrary.a。シャーピーツールも含まApiDefinition.csれています。StructAndEnum.cs

これで、そのバインディング プロジェクトをリンクする iOS プロジェクトができました。MyLibrary.a動作させるには、いくつかのフレームワークとライブラリが必要です (以下を参照)。

ここに画像の説明を入力

それを機能させるために、 Xamarin のドキュメントに従いました。

iOS プロジェクトでは、以下を追加しましたmtouch arguments(添付の画像も参照)。

--cxx -gcc_flags "-L${ProjectDir} -framework CFNetwork -framework SystemConfiguration -framework MobileCoreServices -framework Security -framework AVFoundation -libicucore -libxml2 -libc++ -libzd -libstdc++.6.0.9"

ここに画像の説明を入力

コンパイルしようとすると、常にビルド エラーで終了します。

MTOUCH: エラー MT5209: ネイティブ リンク エラー: -libicucore のライブラリが見つかりません MTOUCH: エラー MT5201: ネイティブ リンクに失敗しました。gcc に提供されたビルド ログとユーザー フラグを確認してください。 -libzd -libstdc++.6.0.9 MTOUCH: エラー MT5202: ネイティブ リンクに失敗しました。ビルド ログを確認してください。

それを機能させる手がかりはありますか?多分何かが欠けていますか?

前もって感謝します。

4

1 に答える 1

1

-libicucore -libxml2 -libc++ -libzd -libstdc++.6.0.9

これは、gcc リンケージのライブラリ オプションを渡す方法ではありません。

にある静的ライブラリまたは動的ライブラリをリンクするためlibicucore.<extension>/path/to/the/libコマンドライン オプションは次のとおりです。

-L/path/to/the/lib -licucore

libオプションでは、ライブラリ名のプレフィックスが省略されていることに注意してください-l。リンカーはそれを想定しています。/path/to/the/libがライブラリのリンカのデフォルト検索ディレクトリの 1 つである場合は、省略できます。Xamarin のドキュメントをもう一度見るlibMyLibrary.a と、オプションにリンクされていることがわかります-lMyLibrary

これらのリンケージ オプションに関する他のいくつかの点は、私の GCC の目には非常に奇妙に思えますが、iOS 開発についてはほとんど何も知らないので、皆さんがまだ経験していない問題は予想できません。

于 2015-10-26T19:40:34.413 に答える