如何在Android Studio中编写CMakelists来调用我的C 项目(JNI)的功能
How to write CMakeLists in android studio to call functions from my c++project (JNI)
我是Android Studio的新手。我构建了一个C 项目,其中包含.cc
和.h
文件。但是我想通过Android Studio 2.2开发的应用程序执行它们。我已经搜索了您的项目中的添加C和C 代码,以了解如何编写CMakeLists.txt
。
这是我的CMakeLists.txt
:
cmake_minimum_required(VERSION 3.4.1)
INCLUDE_DIRECTORIES(src/main/include/)
add_library(
native-lib
SHARED
src/main/cpp/native-lib.cpp
)
add_library(
UnitTest
STATIC
src/main/cpp/UnitTest.cc
)
add_library(
CaffeEva
STATIC
src/main/cpp/CaffeEva.cc
)
add_library(
CaffeEvaWrapper
STATIC
src/main/cpp/CaffeEvaWrapper.cc
)
add_library(
BmpImgIO
STATIC
src/main/cpp/BmpImgIO.cc
)
add_library(
BlasWrapper
STATIC
src/main/cpp/BlasWrapper.cc
)
add_library(
CaffePara
STATIC
src/main/cpp/CaffePara.cc
)
find_library(
log-lib
log )
target_link_libraries(
native-lib
UnitTest
CaffeEva
CaffeEvaWrapper
BmpImgIO
BlasWrapper
CaffePara
${log-lib} )
编译我的源.cc
文件和.h
文件。
我的目的是调用JNI参与UnitTest.cc
涉及的函数UnitTest::UT_CaffeEvaWrapper();
,以将其结果放在我的Android手机上。
即使我使用Google提供的演示HellpJNI
,还有一些更改,例如向其添加我自己的文件,它显示错误:
Unfortunately, Q_CNN has stopped.
但是,构建可以没有任何错误。我不知道该怎么做。那么有人可以帮助我吗?指定的教程也可以。预先感谢!
我已经逐步调试我的程序。我发现是错误的文件目录路径会导致此问题。我的文件文件夹是:
const std :: string kclsnamefilepath ="/home/zz/androidstudioprojects/q_cnn/app/src/src/main/assets/cls.names/class_names.txt"; const std :: string kimglablfilepath ="//home/zz/androidstudioprojects/q_cnn/app/src/src/main/assets/cls.names/image_labels.txt"; const std :: string kbmpfilepath ="/home/zz/androidstudioprojects/q_cnn/app/src/src/main/main/assets/bmp.files/ilsvrc2012_val_000000000009.bmp"
但是当我调试时,我发现
file* infile = fopen(filepath.c_str()," r");
指针插入了无效。我不知道如何解决这个问题。
最后,我通过将文件放在手机下解决了!以下步骤是访问您的sdcard!您也应该通过在androidmanifest.xml中添加行
- cmake在我的项目中所需的所有静态库都不成功
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 如何将我的 CMake 项目配置为运行所有单元测试?
- 编译器现在遵循C++14标准,我的项目不再编译神秘的SFML错误
- 如何在我的项目中从 CMAKE 中的同一项目获取多个库
- 为什么我的项目没有保存名称中所做的修改
- 如何将我的小程序转换为用于项目的函数?
- 如何在我的 Visual C++ 项目中使用 .a 文件
- 如何自动获取我的项目的路径并删除一些文件
- Qt - 为什么Visual Studio 2019在qml资源中添加10Mb文件后无法再编译我的项目?
- 我必须构建我的项目 2 次,第一次失败,因为它无法打开库
- 我怎样才能简单地将opencv 包含在我的项目中与CMake
- 我的快速排序在对预排序的项目进行排序时失败,如何改进?
- 部署基于 qt 的项目后,我的 sqlite3 文件不会被复制 (android)
- 如何将外部 dll 添加到我的 VS2019 项目?
- 如何在Cmake中正确查找头路径,以便在我的项目中构建Box2D
- 阻止我的项目调用__CxxFrameHandler3(CRT函数)
- 我的项目中某些仅标头文件不能包含使用 CMake 和 Vscode 的"SFML/Graphics.hpp"
- 如何从支持linux/mac操作系统的第三方代码为我的c#项目创建dll
- 如何在bazel中同时处理外部依赖项和我的项目