gpt4 book ai didi

android - NDK 构建错误

转载 作者:太空宇宙 更新时间:2023-11-03 12:38:21 26 4
gpt4 key购买 nike

我正在尝试在 Android 中使用一些旧的 C++ 代码构建一个包装器。

编译时出现以下错误:

In file included from /usr/local/android/android-ndk-r8b/sources/cxx-stl/gnu-libstdc++/4.6/include/bits/stl_algobase.h:61:0,
from /usr/local/android/android-ndk-r8b/sources/cxx-stl/gnu-libstdc++/4.6/include/bits/stl_tree.h:63,
from /usr/local/android/android-ndk-r8b/sources/cxx-stl/gnu-libstdc++/4.6/include/map:60,
from /home/vocalize/source/xxxxxxxxxxxxxxxxxxxxx/Lxxxxxxx.h:9,
from /home/vocalize/source/xxxxxxxxxxxxxxxxx/jni/cxxx_wrap.c:3:
/usr/local/android/android-ndk-r8b/sources/cxx-stl/gnu-libstdc++/4.6/include/bits/functexcept.h:43:1: error: unknown type name 'namespace'
/usr/local/android/android-ndk-r8b/sources/cxx-stl/gnu-libstdc++/4.6/include/bits/functexcept.h:44:1: error: expected ',' or ';' before '{' token

我正在使用以下 Makefile.mk

include $(CLEAR_VARS)
LOCAL_C_INCLUDES := $(MY_LIB_DIR)include

LOCAL_CFLAGS += -DHAVE_CONFIG_H
LOCAL_CFLAGS += -DANDROID_NDK

LOCAL_PATH := $(BASE_PATH)
LOCAL_MODULE := cxxxx_lib

LOCAL_SRC_FILES := cxxxx_wrap.c

LOCAL_STATIC_LIBRARIES := my_lib
LOCAL_LDLIBS := -llog

include $(BUILD_SHARED_LIBRARY)

我能做些什么来修复这些错误?

最佳答案

cxxx_wrap.c 中包含一个 C++ .h 文件,它是一个 .c 文件。编译器使用源文件的扩展名来检测语言。因此,它假定使用 C,并且对特定于 C++ 的语法感到窒息。

将 cxxx_wrap.c 重命名为 .cpp 或 .cxx。或者用 #ifdef __cplusplus/#endif 包围 #include "Lxxxxxxx.h" 行。或者通过指定 -x c++ 编译器选项强制进行 C++ 编译。

完成后,请确保 cxxx_wrap 中的所有 JNI 方法都使用 JNIEXPORT 声明或用 extern "C"{} 包围。否则,Java 运行时将找不到它们。

郑重声明:将 .h 文件重命名为 .hpp 无济于事。

关于android - NDK 构建错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13176640/

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