调整C++ 代码
This commit is contained in:
parent
9c252dd8d8
commit
de31b79465
@ -8,7 +8,8 @@
|
||||
"dependencies": {
|
||||
"@devwiki/common_ui": "file:../common_ui",
|
||||
"@devwiki/base": "file:../base",
|
||||
"@ohos/axios": "^2.2.0"
|
||||
"@ohos/axios": "^2.2.0",
|
||||
"@devwiki/native_lib": "file:../native_lib"
|
||||
},
|
||||
"devDependencies": {},
|
||||
"dynamicDependencies": {}
|
||||
|
@ -8,6 +8,7 @@ import { Log } from '@devwiki/base';
|
||||
import { BaseLocalStorage, ScreenUtil } from '@devwiki/base';
|
||||
import { HomeItem, HomeItemGroup } from '../model/Home';
|
||||
import { common, Want } from '@kit.AbilityKit';
|
||||
import { CalculateAdapter } from '@devwiki/native_lib/src/main/cpp/types/libnatvie_lib';
|
||||
|
||||
|
||||
@Entry
|
||||
@ -63,9 +64,13 @@ struct Index {
|
||||
}
|
||||
];
|
||||
|
||||
adapter?: CalculateAdapter;
|
||||
|
||||
aboutToAppear(): void {
|
||||
ScreenUtil.getInstance().initScreenSize();
|
||||
BaseLocalStorage.getInstance().init(getContext(this));
|
||||
this.adapter = new CalculateAdapter();
|
||||
let a = this.adapter.add(1,2);
|
||||
}
|
||||
|
||||
onPageShow(): void {
|
||||
|
@ -35,7 +35,8 @@ export struct HomePage {
|
||||
TabContent() {
|
||||
TabView2();
|
||||
}.tabBar("View2")
|
||||
}.onChange((index) => {
|
||||
}.barOverlap(true)
|
||||
.onChange((index) => {
|
||||
if (index == 0) {
|
||||
this.tv1ViewModel.onViewShow();
|
||||
this.tv2ViewModel.onViewHide();
|
||||
|
@ -0,0 +1 @@
|
||||
export {} from './src/main/cpp/types/libnatvie_lib/index'
|
@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "native_lib",
|
||||
"name": "@devwiki/native_lib",
|
||||
"version": "1.0.0",
|
||||
"description": "Please describe the basic information.",
|
||||
"main": "Index.ets",
|
||||
@ -7,6 +7,6 @@
|
||||
"license": "Apache-2.0",
|
||||
"packageType": "InterfaceHar",
|
||||
"dependencies": {
|
||||
"libnatvie_lib.so": "file:./src/main/cpp/types/libnatvie_lib"
|
||||
"native_lib.so": "file:./src/main/cpp/types/libnatvie_lib"
|
||||
}
|
||||
}
|
@ -13,4 +13,4 @@ include_directories(${NATIVERENDER_ROOT_PATH}
|
||||
|
||||
add_library(native_lib SHARED napi_init.cpp)
|
||||
|
||||
target_link_libraries(native_lib PUBLIC ../../../../cppLib/dist/lib/arm64-v8a)
|
||||
target_link_libraries(native_lib PUBLIC ../../../../cppLib/dist/lib/arm64-v8a/libcalculate.so)
|
@ -4,40 +4,36 @@
|
||||
// Node APIs are not fully supported. To solve the compilation error of the interface cannot be found,
|
||||
// please include "napi/native_api.h".
|
||||
|
||||
#include "Calculator.h"
|
||||
#include "Calculate.h"
|
||||
#include "CalculateAdaptor.h"
|
||||
#include "library.h"
|
||||
|
||||
Calculator::Calculator() {
|
||||
CalculateAdaptor::CalculateAdaptor() {
|
||||
_calculate = &Calculate::getInstance();
|
||||
}
|
||||
|
||||
Calculator::~Calculator() {
|
||||
CalculateAdaptor::CalculateAdaptor(napi_env env, napi_value thisVar) {
|
||||
_calculate = &Calculate::getInstance();
|
||||
}
|
||||
|
||||
CalculateAdaptor::~CalculateAdaptor() {
|
||||
|
||||
}
|
||||
|
||||
Calculator *util_get_napi_info(napi_env env, napi_callback_info cbinfo, size_t argc, napi_value *argv)
|
||||
CalculateAdaptor *util_get_napi_info(napi_env env, napi_callback_info cbinfo, size_t argc, napi_value *argv)
|
||||
{
|
||||
napi_value thisVar = nullptr;
|
||||
void *data = nullptr;
|
||||
napi_get_cb_info(env, cbinfo, &argc, argv, &thisVar, &data);
|
||||
Calculator *calculator = nullptr;
|
||||
CalculateAdaptor *calculator = nullptr;
|
||||
napi_unwrap(env, thisVar, (void **)&calculator);
|
||||
return calculator;
|
||||
}
|
||||
|
||||
Calculate *util_get_napi_calculate(napi_env env, napi_callback_info cbinfo, size_t argc, napi_value *argv)
|
||||
{
|
||||
Calculator *calculator = util_get_napi_info(env, cbinfo, argc, argv);
|
||||
if (calculator) {
|
||||
return calculator->_calculate;
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
napi_value calculate_add(napi_env env, napi_callback_info info) {
|
||||
size_t argc = 2;
|
||||
napi_value argv[2] = {0};
|
||||
Calculator *calculator = util_get_napi_info(env, info, argc, argv);
|
||||
CalculateAdaptor *calculator = util_get_napi_info(env, info, argc, argv);
|
||||
|
||||
int32_t result = 0;
|
||||
napi_status a = napi_ok;
|
||||
@ -51,10 +47,10 @@ napi_value calculate_add(napi_env env, napi_callback_info info) {
|
||||
return value;
|
||||
}
|
||||
|
||||
CalculateInfo calculate_getInfo(napi_env env, napi_callback_info info) {
|
||||
napi_value calculate_getInfo(napi_env env, napi_callback_info info) {
|
||||
size_t argc = 0;
|
||||
napi_value argv[1] = {0};
|
||||
Calculator *calculator = util_get_napi_info(env, info, argc, argv);
|
||||
CalculateAdaptor *calculator = util_get_napi_info(env, info, argc, argv);
|
||||
|
||||
CalculateInfo info2;
|
||||
info2.name = calculator->_calculate->getInfo().name;
|
||||
@ -62,4 +58,6 @@ CalculateInfo calculate_getInfo(napi_env env, napi_callback_info info) {
|
||||
info2.versionName = calculator->_calculate->getInfo().versionName;
|
||||
|
||||
napi_value value;
|
||||
|
||||
return value;
|
||||
}
|
27
native_lib/src/main/cpp/CalculateAdaptor.h
Normal file
27
native_lib/src/main/cpp/CalculateAdaptor.h
Normal file
@ -0,0 +1,27 @@
|
||||
//
|
||||
// Created on 2024/4/22.
|
||||
//
|
||||
// Node APIs are not fully supported. To solve the compilation error of the interface cannot be found,
|
||||
// please include "napi/native_api.h".
|
||||
|
||||
#ifndef HM4DEMO_CALCULATOR_H
|
||||
#define HM4DEMO_CALCULATOR_H
|
||||
|
||||
#include "library.h"
|
||||
#include "js_native_api.h"
|
||||
|
||||
class CalculateAdaptor {
|
||||
public:
|
||||
CalculateAdaptor();
|
||||
CalculateAdaptor(napi_env env, napi_value thisVar);
|
||||
~CalculateAdaptor();
|
||||
Calculate *_calculate;
|
||||
};
|
||||
|
||||
CalculateAdaptor *util_get_napi_info(napi_env env, napi_callback_info cbinfo, size_t argc, napi_value *argv);
|
||||
|
||||
napi_value calculate_add(napi_env env, napi_callback_info info);
|
||||
napi_value calculate_getInfo(napi_env env, napi_callback_info info);
|
||||
|
||||
|
||||
#endif //HM4DEMO_CALCULATOR_H
|
@ -1,27 +0,0 @@
|
||||
//
|
||||
// Created on 2024/4/22.
|
||||
//
|
||||
// Node APIs are not fully supported. To solve the compilation error of the interface cannot be found,
|
||||
// please include "napi/native_api.h".
|
||||
|
||||
#ifndef HM4DEMO_CALCULATOR_H
|
||||
#define HM4DEMO_CALCULATOR_H
|
||||
|
||||
#include "Calculate.h"
|
||||
#include "js_native_api.h"
|
||||
|
||||
class Calculator {
|
||||
public:
|
||||
Calculator();
|
||||
~Calculator();
|
||||
Calculate *_calculate;
|
||||
};
|
||||
|
||||
Calculator *util_get_napi_info(napi_env env, napi_callback_info cbinfo, size_t argc, napi_value *argv);
|
||||
Calculate *util_get_napi_calculate(napi_env env, napi_callback_info cbinfo, size_t argc, napi_value *argv);
|
||||
|
||||
int add(int a, int b);
|
||||
CalculateInfo getInfo();
|
||||
|
||||
|
||||
#endif //HM4DEMO_CALCULATOR_H
|
@ -1,40 +1,38 @@
|
||||
#include "napi/native_api.h"
|
||||
#include "Calculator.h"
|
||||
#include "CalculateAdaptor.h"
|
||||
#include "js_native_api.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, value0 + value1, &sum);
|
||||
|
||||
return sum;
|
||||
napi_value JS_Constructor(napi_env env, napi_callback_info info) {
|
||||
napi_value thisVar = nullptr;
|
||||
void *data = nullptr;
|
||||
napi_get_cb_info(env, info, nullptr, nullptr, &thisVar, &data);
|
||||
CalculateAdaptor *adaptor = new CalculateAdaptor(env, thisVar);
|
||||
napi_wrap(
|
||||
env, thisVar, adaptor,
|
||||
[](napi_env env, void *data, void *hint) {
|
||||
CalculateAdaptor *ada = (CalculateAdaptor *)data;
|
||||
delete ada;
|
||||
},
|
||||
nullptr, nullptr);
|
||||
|
||||
return thisVar;
|
||||
}
|
||||
|
||||
EXTERN_C_START
|
||||
|
||||
|
||||
napi_value Init(napi_env env, napi_value exports)
|
||||
{
|
||||
napi_property_descriptor desc[] = {{"add", nullptr, Calculator::add, nullptr, nullptr, nullptr, napi_default, nullptr},
|
||||
{"getInfo", nullptr, GetInfo, nullptr, nullptr, nullptr, napi_default, nullptr},
|
||||
{"getInstance", nullptr, GetInstance, nullptr, nullptr, nullptr, napi_default, nullptr}};
|
||||
const char className[] = "CalculateAdaptor";
|
||||
napi_property_descriptor desc[] = {{"add", nullptr, calculate_add, nullptr, nullptr, nullptr, napi_default, nullptr},
|
||||
{"getInfo", nullptr, calculate_getInfo, nullptr, nullptr, nullptr, napi_default, nullptr}};
|
||||
napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
|
||||
|
||||
napi_value result = nullptr;
|
||||
napi_define_class(env, className, sizeof(className), JS_Constructor, nullptr,
|
||||
sizeof(desc) / sizeof(desc[0]), desc, &result);
|
||||
|
||||
napi_set_named_property(env, exports, "CalculateAdaptor", result);
|
||||
return exports;
|
||||
}
|
||||
EXTERN_C_END
|
||||
|
@ -1,5 +1,4 @@
|
||||
export class Calculate {
|
||||
export class CalculateAdapter {
|
||||
add(a: number, b: number): number;
|
||||
static getInstance(): Calculate;
|
||||
getInfo(): Object;
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "native_lib_lib.so",
|
||||
"name": "native_lib.so",
|
||||
"types": "./index.d.ts",
|
||||
"version": "",
|
||||
"description": "Please describe the basic information."
|
||||
|
6
native_lib/src/main/ets/CalculateDefine.ets
Normal file
6
native_lib/src/main/ets/CalculateDefine.ets
Normal file
@ -0,0 +1,6 @@
|
||||
|
||||
export interface CalculateInfo {
|
||||
name: string;
|
||||
versionName: string;
|
||||
versionCode: number;
|
||||
}
|
20
native_lib/src/main/ets/Calculator.ets
Normal file
20
native_lib/src/main/ets/Calculator.ets
Normal file
@ -0,0 +1,20 @@
|
||||
import { CalculateAdapter } from 'native_lib.so'
|
||||
import { CalculateInfo } from './CalculateDefine'
|
||||
|
||||
export class Calculator {
|
||||
|
||||
private adaptor!:CalculateAdapter;
|
||||
|
||||
constructor() {
|
||||
this.adaptor = new CalculateAdapter();
|
||||
}
|
||||
|
||||
add(a:number, b: number): number {
|
||||
return this.adaptor.add(a, b);
|
||||
}
|
||||
|
||||
getInfo(): CalculateInfo {
|
||||
return this.adaptor.getInfo() as CalculateInfo;
|
||||
}
|
||||
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
import { Calculate } from 'libnatvie_lib.so';
|
||||
|
||||
export class Calculator {
|
||||
|
||||
static add(a: number, b:number) : number {
|
||||
return Calculate.add(a, b);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user