1

自分の共有ライブラリをコンパイルするときに、既存の共有ライブラリ (FlashRuntimeExtensions.so) を C コードにリンクしたいと考えています。しかし、何をしようとしても、常に同じエラーが発生します。ファイルの形式が間違っていること。これを解決する方法について誰か考えがありますか?

これが私のコンパイルコマンドです:

$ g++ -Wall ane.c FlashRuntimeExtensions.so -o aneObject
FlashRuntimeExtensions.so: could not read symbols: File in wrong format
collect2: ld gaf exit-status 1 terug
4

3 に答える 3

1

コマンド ラインは x86 コードを生成し、ディストリビューションで利用可能なネイティブ g++ を使用して ARM コードにリンクしようとします。

これは機能しません。ここで入手可能な Android NDK を使用します: http://developer.android.com/tools/sdk/ndk/index.html

NDK には、Linux、OS X、および Windows (Cygwin を使用) プラットフォームでネイティブ ARM バイナリを生成できる一連のクロスツールチェーン (コンパイラ、リンカーなど) が含まれています。

于 2012-12-13T10:15:57.680 に答える
0

一般的.soには を使用してリンクされ-lます。

たとえば、使用する pthread-lpthreadです。

gcc sample.c -o myoutput -lpthread

しかし、@chill の声明によると、コマンドで行っていることは正しいだけです。

以下のリンクを参照することをお勧めします。

C++ リンカ エラー SDL イメージ - シンボルを読み取れませんでした

于 2012-12-13T09:05:40.510 に答える
0

アーキテクチャの不一致である必要があります。私は一度この問題に直面しましたが、同じターゲットプラットフォームでライブラリを構築することで解決しましたが、それは明らかです。Linux や Unix のような OS を使用している場合は file コマンドで確認でき、Windows を使用している場合は Dependency Walker を使用して確認できます。すべてのライブラリがアーキテクチャと一致していることを確認する必要があります。

于 2013-04-22T08:47:38.470 に答える