Правильная замена имени функции с использованием макроса определения в cpp

Я использую библиотеки Eclipse + Qualcomm (в cpp) + Android SDK на Ubuntu. Мое приложение работает нормально. Если я изменю код в библиотеках qualcomm, он компилируется и работает правильно.

Проблема: я изменил имя проекта, и мне нужно изменить код в cpp (имя функции), если я этого не сделаю, я получаю Java.lang .UNSATISFIEDLINKОШИБКА .

Это потому, что все функции имеют имя пакета 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 с помощью верхнего определения, которое изменяет все автоматически, если мне нужно его использовать в других проектах.

Я прочитал это руководство . Разве я не могу заменить текст внутри другого текста или что-то в этом роде?

5
задан Brian Tompsett - 汤莱恩 28 November 2015 в 23:50
поделиться