Android ndk 如何在使用NDK时添加自定义宏?
我需要一些自定义宏在我的NDK项目 然而,我没有理想的添加方法,也没有找到答案 有人能帮忙吗?Android ndk 如何在使用NDK时添加自定义宏?,android-ndk,Android Ndk,我需要一些自定义宏在我的NDK项目 然而,我没有理想的添加方法,也没有找到答案 有人能帮忙吗? 非常感谢 如果你理解正确,你就需要看看它是如何工作的 你有编写C/C++程序的经验吗?首先,对于应用程序的哪些部分是用本机代码编写的,您应该非常挑剔。此外,您需要记住,当涉及到内存分配等问题时,本机代码的行为将完全不同,因此这真的不是猜测的地方 花些时间了解C/C++,明智地设计应用程序,以便清楚地定义要用本机代码编写的部分,并且不会增加应用程序崩溃的机会。我猜大多数项目都可以不使用本机应用程序部分,
非常感谢 如果你理解正确,你就需要看看它是如何工作的 你有编写C/C++程序的经验吗?首先,对于应用程序的哪些部分是用本机代码编写的,您应该非常挑剔。此外,您需要记住,当涉及到内存分配等问题时,本机代码的行为将完全不同,因此这真的不是猜测的地方
花些时间了解C/C++,明智地设计应用程序,以便清楚地定义要用本机代码编写的部分,并且不会增加应用程序崩溃的机会。我猜大多数项目都可以不使用本机应用程序部分,因此如果您正在使用它,并且不知道自己在做什么,您应该真正重新评估这样做是否正确。如果您想在编译NDK代码(jni)时添加特殊定义,请将以下内容添加到您的Android.mk中:
LOCAL_CFLAGS := -DMYDEFINE
这将在c/c++代码中定义宏MYDEFINE。这里有一个例子
#ifdef MYDEFINE
// We build the project with this special macro
#else
// We build without setting the macro in the LOCAL_CFLAGS
#endif
如果你说的是android makefile宏,比如 $(呼叫我的目录) 它与GNU makefile语法完全相同 例如: 反向=$(2)$(1) foo=$(反向调用,a,b) $(警告$(foo)) 结果: b a 要定义marcro:
LOCAL_CFLAGS += -DYOUR_MACRO
要使用值定义宏,请执行以下操作:
LOCAL_CFLAGS += -DYOUR_MACRO='"string"'
或
就个人而言,我建议使用+=而不是:=以避免
本地\u CFLAGS
被覆盖。我正在进行迁移,我是android的新手,谢谢你的建议!同意。我想补充一点,如果有人决定为Android应用程序混合Java和本机代码,请尽量减少跨越JNI边界。也就是说:尽量减少JNI调用,因为它们相对昂贵。IMHO,任何人发现自己处于高频JNI呼叫无法避免的情况下,应该认真考虑只使用java。如果不是出于性能原因,那么至少是为了防止JNI引起的头痛。很高兴它起了作用:P所以你可能会接受答案hehe:请从我的错误中吸取教训:不要错过-DMYDEFINE
中的D
LOCAL_CFLAGS += -DYOUR_MACRO=123