У меня есть две функции, объявленные следующим образом, использующие extern "C"
, чтобы избежать искажения имени.
#ifdef __cplusplus
extern "C" {
#endif
JNIEXPORT jobject JNICALL Java_com_trident_tv_si_SIManagerImpl_nGetServiceDetails
(JNIEnv *, jobject, jint);
JNIEXPORT jobject JNICALL Java_com_trident_tv_si_SIManagerImpl_nGetServiceCurrentEvent
(JNIEnv *, jobject, jint);
#ifdef __cplusplus
}
#endif
#endif
Удивительно, но вторая функция все еще имеет искаженное имя _GLOBAL__I_Java_com_trident_tv_si_SIManagerImpl_nGetServiceCurrentEvent
, мне было интересно, каково ее назначение и почему первая функция не сгенерировала его?
00004d58 T Java_com_trident_tv_si_SIManagerImpl_nGetServiceCurrentEvent
0000533a T Java_com_trident_tv_si_SIManagerImpl_nGetServiceDetails
0000494f t _GLOBAL__I_Java_com_trident_tv_si_SIManagerImpl_nGetServiceCurrentEvent
РЕДАКТИРОВАТЬ:
Найти что-то здесь.Однако четкого ответа пока нет.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12293