HarmonyOS鸿蒙Next中怎么在已有项目中添加c++代码,并调用

HarmonyOS鸿蒙Next中怎么在已有项目中添加c++代码,并调用 已经有了一个项目,并不是通过new -> create project -> native c++ 创建的,而是一个Empty Ability,应该怎么添加已有的c++代码?

直接拷贝了一个native c++ 中的cpp目录,import xxx from 'xxx.so’爆红

3 回复

创建空工程后

  1. 在 entry 下创建 libs 目录,在该 libs 目录下创建引用的设备位数目录,如 libs/armeabi-v7a,将 so 放到该目录。
  2. import xxx from ‘libxxx.so’,直接使用这样引入库。

这样就可以引用库中的函数了。

更多关于HarmonyOS鸿蒙Next中怎么在已有项目中添加c++代码,并调用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中添加C++代码并调用,可以按照以下步骤操作:

  1. 创建C++源文件:在项目的cpp目录下创建新的C++源文件,例如example.cpp
#include <iostream>
extern "C" {
    void exampleFunction() {
        std::cout << "Hello from C++!" << std::endl;
    }
}
  1. 创建C++头文件:在cpp目录下创建头文件example.h,声明C++函数:
#ifndef EXAMPLE_H
#define EXAMPLE_H
extern "C" {
    void exampleFunction();
}
#endif
  1. 配置CMakeLists.txt:在项目的CMakeLists.txt中添加C++源文件:
add_library(example SHARED cpp/example.cpp)
target_link_libraries(example PUBLIC libhilog_ndk.z.so)
  1. 在Java中调用C++代码:在Java类中使用System.loadLibrary加载C++库并调用:
public class MainAbilitySlice extends AbilitySlice {
    static {
        System.loadLibrary("example");
    }
    public native void exampleFunction();
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        exampleFunction();
    }
}
  1. 编译运行:编译项目并运行,C++代码将被调用。

以上步骤在HarmonyOS鸿蒙Next中添加并调用C++代码。

在HarmonyOS鸿蒙Next中添加C++代码并调用,可以按照以下步骤进行:

  1. 创建C++源文件:在项目的cpp目录下创建C++源文件(如example.cpp)和头文件(如example.h)。

  2. 编写C++代码:在example.cpp中实现功能,并在example.h中声明函数。

  3. 修改CMakeLists.txt:在项目的CMakeLists.txt中添加C++源文件的路径,并配置编译选项。

  4. 调用C++代码:在Java或JS代码中使用JNI(Java Native Interface)或NAPI(Native API)调用C++函数。

例如,使用JNI调用C++函数:

public native void nativeFunction();

在C++中实现:

#include <jni.h>
extern "C" JNIEXPORT void JNICALL Java_com_example_MainActivity_nativeFunction(JNIEnv* env, jobject obj) {
    // 实现功能
}
  1. 编译运行:编译项目并运行,确保C++代码被正确调用。

通过这些步骤,你可以在HarmonyOS鸿蒙Next项目中添加并调用C++代码。

回到顶部