'未定义对..'的引用;将APP_STL从gnustl_static切换到c++_shared后出错
'Undefined reference to...' error after switching APP_STL from gnustl_static to c++_shared
在将APP_STL更改为c++_shared后,我遇到了一个问题。我在共享库的cpp文件中遇到了很多错误,比如"vtable fortypename:error:undefined reference tomethod"或"error:unddefined reference tomethod。"。然而,当我使用APP_STL=gnustl_static 时,一切都很好
我试图在Android.mk中使用LOCAL_ALLOW_UNDEFINED_SYMBOLS=true忽略此错误,但它导致运行时崩溃,并显示消息"dlopen failed:cannot locate symbol…"。。。由…引用"。这是我的Android.mk的一部分。所有未定义的函数都包含在allHeadersHere文件中。
LOCAL_MODULE := mySharedLib
LOCAL_C_INCLUDES := allHeadersHere
LOCAL_CPPFLAGS := -Wno-error=narrowing -D_DEBUG -std=c++11 -pthread -frtti -fexceptions -g -gdwarf-2 -DANDROID_WCHAR -DANDROID_GLES2
LOCAL_STATIC_LIBRARIES := somelib
FILE_LIST := $(wildcard $(LOCAL_PATH)/*.c*)
LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)
include $(BUILD_SHARED_LIBRARY)
所以我终于解决了这个问题。也许它对某些人有用。我的项目中有一个NDK-v15的静态库。这些库是用与APP_STL=c++_shared不兼容的工具链构建的。因此,我为NDK-v18添加了相同的库。但是我忘了更新cpp文件。作为结果,编译器试图找到在新的静态库中不推荐使用但仍在旧的cpp文件中声明的方法的实现
相关文章:
- 访问者访问变体并返回不同类型时出错
- 在Linux for Windows上编译C++代码时出错
- 读取文件的最后一行并输入到链接列表时出错
- 重载操作程序时出错>>用于类中的字符串 memebr
- 调用专用模板时出错"no matching function for call to [...]"
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- LINK 尝试使用 OpenSSL evp aes 256 c++ 时出错
- 在Google Kick start中提交时出错
- 在c++中访问int到类对象的映射时出错
- 分段错误当我试图运行程序时出错
- 使用dynamic_cast和构造函数时出错
- CHECK(调用)函数在Google Colab中出错
- 用pybind11包装C++抽象类时出错
- 为x86而非x64编译时出错
- 从R调用C++函数并对其进行集成时出错
- 这个函数哪里出错了
- C++ 创建包含链表和字符串的对象的链接列表时出错
- 为重写std::exception的库生成swig接口时出错
- 导入/导出变量时出错
- 在python中打开共享对象文件时出错(OSError: cannot open shared object file: