2

私はモノタッチでiPhoneアプリに取り組んでいます。私のアプリでは、サードパーティが提供する静的ライブラリを使用する必要があります。このライブラリは Xcode 用であり、Objective-C で記述されています。Binding Project Template を使って Monotouch でバインドしました。結果をプロジェクトに追加するdllと正常にコンパイルされますが、ライブラリのクラスを使用すると、次のエラーでコンパイルに失敗します:

Duplicate symbol _DeleteCriticalSection

それで、なにかお手伝いできますか?競合を解消する方法はありますか? 前もって感謝します。

4

1 に答える 1

1

一部のファイルが複製され、オブジェクトが複製される FAT ライブラリ内で同様のことが見られました。これが同じ問題であるかどうかを確認することができます。たとえば、ライブラリに名前が付けられているかどうかなどです。mystaticlibrary.a

$ nm mystaticlibrary.a | grep DeleteCriticalSection

FAT ライブラリ (複数のアーキテクチャ) がある場合は、シンボルが複数回表示されるのが正常な場合があります。そうであるかどうかを確認するには、次のようにします。

$ file mystaticlibrary.a

各アーキテクチャのシンボルが必要です。より多くのシンボルが表示される場合 (例: 3xDeleteCriticalSectionで 2 つのアーチのみ)、同様の問題があります。

修正 (同じ問題の場合) は、FAT ライブラリ (lipoツール) を分割し、次に各アーキテクチャ固有のライブラリを分割し、すべてを再マージ (arch の次に FAT) することでした。

あなたの最善の策は、ライブラリ ベンダーに連絡して、修正されたライブラリを要求することです (ビルド プロセスで何らかの問題が発生した可能性があります)。上記のコマンド出力を提供すると、問題の原因がわかります。

于 2013-01-28T21:10:35.953 に答える