HarmonyOS鸿蒙Next中C++编程如何引入libuv库
HarmonyOS鸿蒙Next中C++编程如何引入libuv库
直接在cmake文件中添加 target_link_libraries(concurrent PUBLIC libace_napi.z.so libuv.so libhilog_ndk.z.so)
但缺少include文件 查阅后添加 include_directories("/Users/buyi/hongmeng/env/HMSDK/openharmony/10/native/sysroot/usr/include/")
然后就报以下这个错误
In file included from /Users/buyi/hongmeng/mt-project/gtest-demo/entry/src/test/cpp/calculate/calculate_test.cpp:1:
In file included from /Users/buyi/hongmeng/mt-project/gtest-demo/entry/src/test/cpp/calculate/../gtest/googletest/include/gtest/gtest.h:53:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.1.sdk/usr/include/c++/v1/cstdint:144:
/Users/buyi/hongmeng/env/HMSDK/openharmony/10/native/sysroot/usr/include/stdint.h:20:10: fatal error: 'bits/alltypes.h' file not found
想问一下一般在鸿蒙开发c时应该怎么引入第三方库 例如libuv
更多关于HarmonyOS鸿蒙Next中C++编程如何引入libuv库的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1、编写代码
新增一个简单的工具类,该工具类中有一个Add
方法,调用该方法返回两个数之和
util.h
#ifndef ADDDEMO_UTIL_H
#define ADDDEMO_UTIL_H
int Add(int a,int b);
#endif //ADDDEMO_UTIL_H
util.cpp
#include <iostream>
#include "include/util.h"
int Add(int a, int b) {
return a + b;
}
CMakeLists.txt
cmake_minimum_required(VERSION 3.26)
project(AddDemo)
set(CMAKE_CXX_STANDARD 11)
include_directories(${PROJECT_SOURCE_DIR}/include)
add_library(AddDemo SHARED util.cpp)
2、将上面的代码编译成动态链接库 可以参考下面的链接进行构建
OHOS SDK编译cmake构建的库 - 开发者平台部 - 3MS知识管理社区
3、增加依赖 在src/main/cpp下面增加文件夹thirdPart,并将util.h头文件加入
在libs下面的armeabi-v7a和arm64-v8a下增加步骤2中编译好的so文件
在CMakeLists.txt文件中添加so库的动态链接
target_link_libraries(entry PUBLIC
libace_napi.z.so
libhilog_ndk.z.so
${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libAddDemo.so #此处是引用的第三方库
)
target_include_directories(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdPart/)
在build-profile.json5中添加armeabi-v7a和arm64-v8a。注意这里如果不需要多个架构的只填一个也可以
"externalNativeOptions": {
"path": "./src/main/cpp/CMakeLists.txt",
"arguments": "",
"cppFlags": "",
"abiFilters": [
"armeabi-v7a",
"arm64-v8a"
]
}
4、调用 此时可以直接引用头文件进行调用
#include "thirdPart/util.h"
static napi_value Add(napi_env env, napi_callback_info info) {
size_t requireArgc = 2;
size_t argc = 2;
napi_value args[2] = {nullptr};
napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
napi_valuetype valuetype0;
napi_typeof(env, args[0], &valuetype0);
napi_valuetype valuetype1;
napi_typeof(env, args[1], &valuetype1);
double value0;
napi_get_value_double(env, args[0], &value0);
double value1;
napi_get_value_double(env, args[1], &value1);
napi_value sum;
napi_create_double(env, Add(value0, value1), &sum);
return sum;
}
参考这个链接引入第三方库
更多关于HarmonyOS鸿蒙Next中C++编程如何引入libuv库的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中进行C++编程时,引入libuv库的步骤如下:
-
下载libuv源码:首先,从libuv的官方GitHub仓库下载源码。可以通过以下命令克隆仓库:
git clone https://github.com/libuv/libuv.git
-
编译libuv:进入libuv源码目录,使用CMake进行编译。假设你已经安装了CMake和Ninja(或Make),执行以下命令:
mkdir build cd build cmake -GNinja .. ninja
编译完成后,你会在
build
目录下看到生成的静态库文件(如libuv.a
)。 -
将libuv库添加到鸿蒙项目中:在你的鸿蒙项目中,将编译好的
libuv.a
文件放入libs
目录中。然后,在项目的BUILD.gn
文件中添加对libuv库的引用。例如:shared_library("your_target") { sources = [ "your_source_files.cpp", ] include_dirs = [ "path_to_libuv_include", ] ldflags = [ "-Lpath_to_libuv_libs", "-luv", ] }
-
配置头文件路径:确保在项目的头文件路径中包含libuv的头文件目录。可以在
BUILD.gn
文件中通过include_dirs
指定。 -
编写代码使用libuv:在你的C++代码中,包含libuv的头文件并开始使用其API。例如:
#include <uv.h> int main() { uv_loop_t *loop = uv_default_loop(); // 使用libuv的API uv_run(loop, UV_RUN_DEFAULT); return 0; }
-
编译鸿蒙项目:最后,使用鸿蒙的编译工具链编译你的项目,确保libuv库被正确链接。
通过以上步骤,你可以在HarmonyOS鸿蒙Next的C++项目中成功引入并使用libuv库。
在HarmonyOS鸿蒙Next中引入libuv库,首先确保libuv库已编译为适用于鸿蒙的静态库(.a文件)。然后,在C++项目的CMakeLists.txt
中,通过target_link_libraries
指定libuv库的路径,并将其链接到目标可执行文件或库中。例如:
target_link_libraries(your_target_name /path/to/libuv.a)
最后,在C++代码中包含libuv头文件即可使用其功能。