调整C++ 代码
This commit is contained in:
parent
9c252dd8d8
commit
de31b79465
@ -8,7 +8,8 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@devwiki/common_ui": "file:../common_ui",
|
"@devwiki/common_ui": "file:../common_ui",
|
||||||
"@devwiki/base": "file:../base",
|
"@devwiki/base": "file:../base",
|
||||||
"@ohos/axios": "^2.2.0"
|
"@ohos/axios": "^2.2.0",
|
||||||
|
"@devwiki/native_lib": "file:../native_lib"
|
||||||
},
|
},
|
||||||
"devDependencies": {},
|
"devDependencies": {},
|
||||||
"dynamicDependencies": {}
|
"dynamicDependencies": {}
|
||||||
|
@ -8,6 +8,7 @@ import { Log } from '@devwiki/base';
|
|||||||
import { BaseLocalStorage, ScreenUtil } from '@devwiki/base';
|
import { BaseLocalStorage, ScreenUtil } from '@devwiki/base';
|
||||||
import { HomeItem, HomeItemGroup } from '../model/Home';
|
import { HomeItem, HomeItemGroup } from '../model/Home';
|
||||||
import { common, Want } from '@kit.AbilityKit';
|
import { common, Want } from '@kit.AbilityKit';
|
||||||
|
import { CalculateAdapter } from '@devwiki/native_lib/src/main/cpp/types/libnatvie_lib';
|
||||||
|
|
||||||
|
|
||||||
@Entry
|
@Entry
|
||||||
@ -63,9 +64,13 @@ struct Index {
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
adapter?: CalculateAdapter;
|
||||||
|
|
||||||
aboutToAppear(): void {
|
aboutToAppear(): void {
|
||||||
ScreenUtil.getInstance().initScreenSize();
|
ScreenUtil.getInstance().initScreenSize();
|
||||||
BaseLocalStorage.getInstance().init(getContext(this));
|
BaseLocalStorage.getInstance().init(getContext(this));
|
||||||
|
this.adapter = new CalculateAdapter();
|
||||||
|
let a = this.adapter.add(1,2);
|
||||||
}
|
}
|
||||||
|
|
||||||
onPageShow(): void {
|
onPageShow(): void {
|
||||||
|
@ -35,7 +35,8 @@ export struct HomePage {
|
|||||||
TabContent() {
|
TabContent() {
|
||||||
TabView2();
|
TabView2();
|
||||||
}.tabBar("View2")
|
}.tabBar("View2")
|
||||||
}.onChange((index) => {
|
}.barOverlap(true)
|
||||||
|
.onChange((index) => {
|
||||||
if (index == 0) {
|
if (index == 0) {
|
||||||
this.tv1ViewModel.onViewShow();
|
this.tv1ViewModel.onViewShow();
|
||||||
this.tv2ViewModel.onViewHide();
|
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",
|
"version": "1.0.0",
|
||||||
"description": "Please describe the basic information.",
|
"description": "Please describe the basic information.",
|
||||||
"main": "Index.ets",
|
"main": "Index.ets",
|
||||||
@ -7,6 +7,6 @@
|
|||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"packageType": "InterfaceHar",
|
"packageType": "InterfaceHar",
|
||||||
"dependencies": {
|
"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)
|
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,
|
// Node APIs are not fully supported. To solve the compilation error of the interface cannot be found,
|
||||||
// please include "napi/native_api.h".
|
// please include "napi/native_api.h".
|
||||||
|
|
||||||
#include "Calculator.h"
|
#include "CalculateAdaptor.h"
|
||||||
#include "Calculate.h"
|
#include "library.h"
|
||||||
|
|
||||||
Calculator::Calculator() {
|
CalculateAdaptor::CalculateAdaptor() {
|
||||||
_calculate = &Calculate::getInstance();
|
_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;
|
napi_value thisVar = nullptr;
|
||||||
void *data = nullptr;
|
void *data = nullptr;
|
||||||
napi_get_cb_info(env, cbinfo, &argc, argv, &thisVar, &data);
|
napi_get_cb_info(env, cbinfo, &argc, argv, &thisVar, &data);
|
||||||
Calculator *calculator = nullptr;
|
CalculateAdaptor *calculator = nullptr;
|
||||||
napi_unwrap(env, thisVar, (void **)&calculator);
|
napi_unwrap(env, thisVar, (void **)&calculator);
|
||||||
return 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) {
|
napi_value calculate_add(napi_env env, napi_callback_info info) {
|
||||||
size_t argc = 2;
|
size_t argc = 2;
|
||||||
napi_value argv[2] = {0};
|
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;
|
int32_t result = 0;
|
||||||
napi_status a = napi_ok;
|
napi_status a = napi_ok;
|
||||||
@ -51,10 +47,10 @@ napi_value calculate_add(napi_env env, napi_callback_info info) {
|
|||||||
return value;
|
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;
|
size_t argc = 0;
|
||||||
napi_value argv[1] = {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;
|
CalculateInfo info2;
|
||||||
info2.name = calculator->_calculate->getInfo().name;
|
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;
|
info2.versionName = calculator->_calculate->getInfo().versionName;
|
||||||
|
|
||||||
napi_value value;
|
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 "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)
|
napi_value JS_Constructor(napi_env env, napi_callback_info info) {
|
||||||
{
|
napi_value thisVar = nullptr;
|
||||||
size_t requireArgc = 2;
|
void *data = nullptr;
|
||||||
size_t argc = 2;
|
napi_get_cb_info(env, info, nullptr, nullptr, &thisVar, &data);
|
||||||
napi_value args[2] = {nullptr};
|
CalculateAdaptor *adaptor = new CalculateAdaptor(env, thisVar);
|
||||||
|
napi_wrap(
|
||||||
napi_get_cb_info(env, info, &argc, args , nullptr, nullptr);
|
env, thisVar, adaptor,
|
||||||
|
[](napi_env env, void *data, void *hint) {
|
||||||
napi_valuetype valuetype0;
|
CalculateAdaptor *ada = (CalculateAdaptor *)data;
|
||||||
napi_typeof(env, args[0], &valuetype0);
|
delete ada;
|
||||||
|
},
|
||||||
napi_valuetype valuetype1;
|
nullptr, nullptr);
|
||||||
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;
|
|
||||||
|
|
||||||
|
return thisVar;
|
||||||
}
|
}
|
||||||
|
|
||||||
EXTERN_C_START
|
EXTERN_C_START
|
||||||
|
|
||||||
|
|
||||||
napi_value Init(napi_env env, napi_value exports)
|
napi_value Init(napi_env env, napi_value exports)
|
||||||
{
|
{
|
||||||
napi_property_descriptor desc[] = {{"add", nullptr, Calculator::add, nullptr, nullptr, nullptr, napi_default, nullptr},
|
const char className[] = "CalculateAdaptor";
|
||||||
{"getInfo", nullptr, GetInfo, nullptr, nullptr, nullptr, napi_default, nullptr},
|
napi_property_descriptor desc[] = {{"add", nullptr, calculate_add, nullptr, nullptr, nullptr, napi_default, nullptr},
|
||||||
{"getInstance", nullptr, GetInstance, 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_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;
|
return exports;
|
||||||
}
|
}
|
||||||
EXTERN_C_END
|
EXTERN_C_END
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
export class Calculate {
|
export class CalculateAdapter {
|
||||||
add(a: number, b: number): number;
|
add(a: number, b: number): number;
|
||||||
static getInstance(): Calculate;
|
|
||||||
getInfo(): Object;
|
getInfo(): Object;
|
||||||
}
|
}
|
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "native_lib_lib.so",
|
"name": "native_lib.so",
|
||||||
"types": "./index.d.ts",
|
"types": "./index.d.ts",
|
||||||
"version": "",
|
"version": "",
|
||||||
"description": "Please describe the basic information."
|
"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