gpt4 book ai didi

c++ - 正确使用cpp中的定义宏替换函数的名称

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:58:19 26 4
gpt4 key购买 nike

我在 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 .我不能替换另一个文本或类似内容中的文本吗?

最佳答案

你正在寻找字符串连接,像这样:

#define MAIN_ACTIVITY_PREFIX(n) Java_org_myproject_marker_MainActivity##n

然后像这样使用它:

MAIN_ACTIVITY_PREFIX(_onQCARInitializedNative)(JNIEnv *, jobject)

关于c++ - 正确使用cpp中的定义宏替换函数的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8785691/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com