【发布时间】:2012-01-09 08:39:21
【问题描述】:
我在 Ubuntu 上使用 Eclipse + Qualcomm 库(在 cpp 中)+ Android SDK。我的应用程序运行良好。如果我更改 qualcomm 库中的一些代码,它会编译并正常工作。
问题是:我改了项目的名字,还得改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。我不能替换另一个文本中的文本或类似的东西吗?
【问题讨论】:
标签: c++ exception linker c-preprocessor