2012-01-09 1 views
4

私はEclipse + Qualcommライブラリ(cppで)+ Android SDKをUbuntuで使用しています。私のアプリケーションは正常に動作します。もし私がクアルコムのライブラリでいくつかのコードを変更すると、それはコンパイルされ正しく動作します。cppで定義マクロを使用している関数の名前を正しく置き換えてください

問題は次のとおりです。私はプロジェクトの名前を変更しましたが、cpp(関数の名前)のコードを変更する必要があります。実行しないとJava.lang.UNSATISFIEDLINKERRORになります。

#define MAIN_ACTIVITY_PREFIX org_myproject_marker_MainActivity 
#define VISUALIZER_PREFIX org_myproject_marker_Visualizer 

そして、私は、すべての正しい機能を変更します。

Java_org_myproject_marker_MainActivity_onQCARInitializedNative(JNIEnv *, jobject) 

は、その後、私はこのようにマクロを定義:すべての機能は、このようなAndroidのパッケージとして名を持っているためだ

Java_MAIN_ACTIVITY_PREFIX_onQCARInitializedNative(JNIEnv *, jobject) 

しかし、私はまだJava.lang.UNSATISFIEDLINKERRORを取得しています。

#defineマクロを使用せずに(すべての行を書き込むと)動作しますが、他のプロジェクトで使用する必要がある場合はすべてを自動的に変更するトップ定義のcppコードを保存します。

私はthis tutorialを読みました。別のテキストなどのテキストを置き換えることはできませんか?その後、

#define MAIN_ACTIVITY_PREFIX(n) Java_org_myproject_marker_MainActivity##n 

とこのようにそれを使用します:あなたはこのように、文字列の連結を探している

答えて

6

実際

MAIN_ACTIVITY_PREFIX(_onQCARInitializedNative)(JNIEnv *, jobject) 
+0

問題を解決してくれてありがとうございました – vgonisanz

7

、CPPマクロ文句を言わないが、識別子の途中で展開すること。あなたがそれを渡し、関数名にJava_org_myproject_marker_MainActivityを付加しますマクロを与える

#define MAIN_ACTIVITY_PREFIX(func) Java_org_myproject_marker_MainActivity##func 

で試してみてください。

MAIN_ACTIVITY_PREFIX(_onQCARInitializedNative)(JNIEnv *, jobject) { 
    ... 
} 
+0

ありがとう、問題を解決してください – vgonisanz

関連する問題