这两天弄一个工程,是在安卓端部署ncnn with vulkan的项目
一般来说都会用到 try catch 或者 有些库需要用到typeid
一般的方法是在build.gradle里面加上
externalNativeBuild {
cmake {
cppFlags '-std=c++11 -frtti -fexceptions'
abiFilters "armeabi-v7a", "arm64-v8a"
}
}
这个网上很多我就不具体说了,但是我发现我的工程即使加了这个也还是用不了,一开始以为是自己的设置啥的有问题,后来发现只要cmake里加了ncnn就会出这个问题,因此我就认真的读了ncnn里的cmake文件一般路径为:
ncnn-xxxxxx-android-vulkan\arm64-v8a\lib\cmake\ncnn\ncnn.cmake
于是在大概57行的位置我发现了这个:
set_target_properties(ncnn PROPERTIES
INTERFACE_COMPILE_OPTIONS "-fno-rtti;-fno-exceptions"
INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include/ncnn"
INTERFACE_LINK_LIBRARIES "-fopenmp;-static-openmp;Threads::Threads;Vulkan::Vulkan;\$<LINK_ONLY:glslang>;\$<LINK_ONLY:SPIRV>;android;jnigraphics;log"
INTERFACE_POSITION_INDEPENDENT_CODE "ON"
)
好的罪魁祸首就是他了,只要把-fno-rtti;-fno-exceptions 改成 -frtti;-fexceptions就可以了。
不过我得声明一下我也是个小白哈,具体这么改了之后对ncnn的运行性能有什么影响我没有测,如果有大佬知道更好的解决办法希望能告诉我一下,我实在是没有别的办法了
博主在尝试在Android端部署ncnn with Vulkan项目时,遇到了因编译选项导致的错误。尽管通常会通过在build.gradle中设置cppFlags来启用RTTI和异常处理,但ncnn的CMake文件中硬编码了禁用这些选项的参数。通过修改ncnn的CMake文件,将-fno-rtti和-fno-exceptions改为-enable-rtti和-enable-exceptions解决了问题。然而,博主不确定这是否会影响ncnn的运行性能,希望有经验的大佬提供更好的解决方案。

5086

被折叠的 条评论
为什么被折叠?



