Android studio中配置opencv的JNI接口后,继续创建CPP文件的方法

上一篇文章讲述了在Android studio中配置opencv的JNI接口,配置好以后,我们的src/main/cpp文件夹下只有一个创建工程时自动生成的native-lib.cpp文件供我们写C++代码。考虑到很多时候会需要多个cpp文件来调用,这里说一下如何继续添加cpp文件,以及如何在CMakeLists.txt文件中进行注册添加。
一:在src/main/cpp文件夹下新建.cpp文件,用来写C++代码,新建是选择C/C++Source File,这样不会额外创建.h文件。
在这里插入图片描述
二:打开CMakeLists.txt文件,进行cpp文件的注册,例如我这里新建的cpp文件名为yxz.cpp,
在这里插入图片描述
在CMakeLists.txt文件中添加

add_library( # Sets the name of the library.
        yxz

        # Sets the library as a shared library.
        SHARED

        # Provides a relative path to your source file(s).
        yxz.cpp)

以及

target_link_libraries( # Specifies the target library.
        yxz

        # Links the target library to the log library
        # included in the NDK.
        ${log-lib})

这里要提醒一下,add_library()和target_link_libraries()是绑定添加的,不能单独添加其中一个,一定要两个函数都添加进去。每次添加cpp文件,都要添加注册一次。

三:
(1)完成添加后,页面切换到yxz.cpp文件下,这时文件中是空的,看到这句蓝色的提示了吗,点击sync Now,等待程序构建完成。
在这里插入图片描述
(2)构建完成后,这个cpp文件就已经添加到工程中了,可以开始写代码了,我们先粘贴以下代码进去,看一下cpp文件是否能够识别各种库文件

#include <jni.h>
#include <string>
using namespace std;

extern "C"
JNIEXPORT jstring JNICALL
Java_com_example_grsture02_MainActivity_yxz(
        JNIEnv *env,
        jobject /* this */) {
    std::string hello="hello world";
    return env->NewStringUTF(hello.c_str());
}

关于这种JNI接口文件的书写格式,需要各位自行学习一下,其中Java_com_example_grsture02_MainActivity_yxz,这一句需要替换成之前创建工程时native-lib.cpp文件中的类名,复制过来并将最后的类名改成yxz即可。
(3)上一步完成后,可以看到代码均能够被识别,且include的包也都是成功的。这就证明新建cpp文件已经成功链接到项目中了。接下来需要调用这个函数。在MainActivity.java文件中找到

    // Used to load the 'native-lib' library on application startup.
    static {
        System.loadLibrary("native-lib");
        System.loadLibrary("yxz");
    }

将自己的yxz.cpp文件添加进去,然后就可以在代码中调用文件中写的函数了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值