我在Ubuntu上使用Eclipse + Qualcomm庫(在cpp中)+ Android SDK。我的應用運行良好。如果我改變了Qualcomm庫中的一些代碼,它會編譯並正常工作。在cpp中使用define宏替換函數的名稱
問題是:我已經改變了項目的名稱,並且我必須在cpp(函數的名稱)中更改一些代碼,如果我不這樣做,我會得到一個Java.lang.UNSATISFIEDLINKERROR
。
這是因爲所有的功能有名字作爲Android包這樣的:
Java_org_myproject_marker_MainActivity_onQCARInitializedNative(JNIEnv *, jobject)
然後我定義一個宏是這樣的:
#define MAIN_ACTIVITY_PREFIX org_myproject_marker_MainActivity
#define VISUALIZER_PREFIX org_myproject_marker_Visualizer
而且我通過改變所有正確的功能:
Java_MAIN_ACTIVITY_PREFIX_onQCARInitializedNative(JNIEnv *, jobject)
但我仍然得到Java.lang.UNSATISFIEDLINKERROR
異常。
它的工作原理如果我沒有使用#define
宏(並且寫出所有行),但是我想用頂端定義保存cpp代碼,如果我需要在其他項目中使用它,它會自動更改所有內容。我已閱讀this tutorial。我不能替換另一個文本內的文本或類似的東西?
非常感謝,解決了問題 – vgonisanz 2012-01-09 09:07:00