From 1ee0ec29b78f99fb134383dd933cb0ad1e2ca7ae Mon Sep 17 00:00:00 2001 From: DevWiki Date: Tue, 28 May 2024 19:32:20 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4C++=20=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cppLib/CMakeLists.txt | 5 +++- cppLib/{library.cpp => Calculate.cpp} | 2 +- cppLib/{library.h => Calculate.h} | 7 +---- .../cpp/library.h => cppLib/CalculateInfo.h | 14 +++------- cppLib/dist/lib/arm64-v8a/libcalculate.so | Bin 538432 -> 538432 bytes native_lib/Index.ets | 2 +- native_lib/src/main/cpp/CMakeLists.txt | 5 +++- native_lib/src/main/cpp/Calculate.h | 25 ++++++++++++++++++ native_lib/src/main/cpp/CalculateAdaptor.cpp | 3 ++- native_lib/src/main/cpp/CalculateAdaptor.h | 3 ++- native_lib/src/main/cpp/CalculateInfo.h | 17 ++++++++++++ ...{CalculateDefine.ets => CalculateInfo.ets} | 0 native_lib/src/main/ets/Calculator.ets | 2 +- 13 files changed, 62 insertions(+), 23 deletions(-) rename cppLib/{library.cpp => Calculate.cpp} (94%) rename cppLib/{library.h => Calculate.h} (82%) rename native_lib/src/main/cpp/library.h => cppLib/CalculateInfo.h (53%) create mode 100644 native_lib/src/main/cpp/Calculate.h create mode 100644 native_lib/src/main/cpp/CalculateInfo.h rename native_lib/src/main/ets/{CalculateDefine.ets => CalculateInfo.ets} (100%) diff --git a/cppLib/CMakeLists.txt b/cppLib/CMakeLists.txt index db127ca..7684869 100644 --- a/cppLib/CMakeLists.txt +++ b/cppLib/CMakeLists.txt @@ -20,7 +20,10 @@ ELSE() ENDIF() # 添加共享库 -add_library(${PROJECT_NAME} ${STATIC_OR_SHARED} library.cpp) +add_library(${PROJECT_NAME} ${STATIC_OR_SHARED} + Calculate.cpp + CalculateInfo.h +) # 解析配置 if(EX_PLATFORM EQUAL 32) diff --git a/cppLib/library.cpp b/cppLib/Calculate.cpp similarity index 94% rename from cppLib/library.cpp rename to cppLib/Calculate.cpp index 7b65604..d814cb7 100644 --- a/cppLib/library.cpp +++ b/cppLib/Calculate.cpp @@ -1,4 +1,4 @@ -#include "library.h" +#include "Calculate.h" #include diff --git a/cppLib/library.h b/cppLib/Calculate.h similarity index 82% rename from cppLib/library.h rename to cppLib/Calculate.h index 0eaa052..502230d 100644 --- a/cppLib/library.h +++ b/cppLib/Calculate.h @@ -2,12 +2,7 @@ #define CPPLIB_LIBRARY_H #include - -struct CalculateInfo { - std::string name; - std::string versionName; - int versionCode; -}; +#include "CalculateInfo.h" class Calculate { public: diff --git a/native_lib/src/main/cpp/library.h b/cppLib/CalculateInfo.h similarity index 53% rename from native_lib/src/main/cpp/library.h rename to cppLib/CalculateInfo.h index 3dcf0c6..ae6a296 100644 --- a/native_lib/src/main/cpp/library.h +++ b/cppLib/CalculateInfo.h @@ -1,11 +1,11 @@ // -// Created on 2024/4/22. +// Created on 2024/5/28. // // 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_CALCULATE_H -#define HM4DEMO_CALCULATE_H +#ifndef HM4DEMO_CALCULATEINFO_H +#define HM4DEMO_CALCULATEINFO_H #include struct CalculateInfo { @@ -14,10 +14,4 @@ struct CalculateInfo { int versionCode; }; -class Calculate { -public: - static Calculate& getInstance(); - int add(int a, int b); - CalculateInfo getInfo(); -}; -#endif //HM4DEMO_CALCULATE_H +#endif //HM4DEMO_CALCULATEINFO_H diff --git a/cppLib/dist/lib/arm64-v8a/libcalculate.so b/cppLib/dist/lib/arm64-v8a/libcalculate.so index 0ed71cc6a2bff96b9056891ed865a393717d99ca..f0c1bc65d21aa9b0876ef763755f6f98c98691cf 100644 GIT binary patch delta 44793 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 delta 44809 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 z z+cYe9l{~mR+1{pME7#v{10P7Xw`thuLnV5f^3h~_n}+3TNq|o!+uJm3@-rn3K96i~ z)3DJOOAdSm+1{pMS#RS{iD^jb>>eC|0W zx*xA^O=a>4k_Xq3*OSMQAD0ri%?K0S%*$Ukx>BNZl>3us^AeYh9wrHJj_gkR9Z7@N zlkK&&*_`&#k^>Jv*G$`9KeHRt1Sx_SpJ%ofJ6yGz7a$@MzDs%3`G)OqRhxXB#KHU5 z7~aa^s)IRg9X$_TPF~O9stsg)yX_}Wn&^5CSDizCO$y*0E-<{|RkKQZu(TQp-L1TU zJTPy#p3$2n20r{k6W!xA!&?}Avn0Wvk?S~IwT0YEGT;w%zyK~8*zu^kjQz)Mk_TUU zkzqRm)z0^eQUbTV*svXe+RW0*^W82>-#5(gO9t^MB6c^Rg9h` zDexNdnE#k%zL2cH_XocEG85f}gG&37^HKnJ8DqGPyo{BPm(V@Ruaf6+P^qn4??M9C zTyCQ6pi=GaKc0~!*t^289aL%;>M4=|3wdbKRBl)3SCR+!9cQAe*BM^I%5Rercon$| zM~%)WA1Kj#m9I;g=p|p8XuV?SKUPQr9KO|8yKx8?BE?I z7`Ed?*O1SZEckJ<9Va@E>`4K9@--&fjuTzVY3p#JdCFgq?Ksg|@_`Zq*Xnb;LhU$F zyHJ-)61?-ZER7>W?fTXq-vuuw+mWFIS=t|x2M@Z=MB9;}E6I0D3H&YDjtrg0(hipB z{mN6WH_>)vsNI-8kOa8TM8kGusNInDTMxnSk?qLPZJhRgk^|p5$?VU&wl$Yk?B}*E zQUq5`HawdnHp^IAorE7yE|Tpa%nsx}5(iJ8Vxs>ZXh~irDexXs$sNtKx3aV=B@2Fy zYzItMFnUKRfG8H4+74&5 zFN4970bfYA!x`7J^6MlI&XDbJ#??&TASG~~Y=<+h;K{)!60KMMk!*)E>fXSAbdUsi zFWp1qoXHMndE>647lG-hTY?s{vH^(K(<5e8yMYP3d;H;=%I(S z(YtifTyL5iOf%CocbMj3(>!jPXH4^=X3VJkWIVo5jr!x4pboyD^tsaAoq!Yi~aDk+zG^e5BpuH!uG4fU-T>V+itLW!?WD DvIZjq diff --git a/native_lib/Index.ets b/native_lib/Index.ets index b001e25..25a2644 100644 --- a/native_lib/Index.ets +++ b/native_lib/Index.ets @@ -1 +1 @@ -export {} from './src/main/cpp/types/libnatvie_lib/index' \ No newline at end of file +export { CalculateAdapter } from './src/main/cpp/types/libnatvie_lib/index' \ No newline at end of file diff --git a/native_lib/src/main/cpp/CMakeLists.txt b/native_lib/src/main/cpp/CMakeLists.txt index 2aa36ba..e80ee06 100644 --- a/native_lib/src/main/cpp/CMakeLists.txt +++ b/native_lib/src/main/cpp/CMakeLists.txt @@ -11,6 +11,9 @@ endif() include_directories(${NATIVERENDER_ROOT_PATH} ${NATIVERENDER_ROOT_PATH}/include) -add_library(native_lib SHARED napi_init.cpp) +add_library(native_lib SHARED + napi_init.cpp + CalculateInfo.h + CalculateAdaptor.cpp) target_link_libraries(native_lib PUBLIC ../../../../cppLib/dist/lib/arm64-v8a/libcalculate.so) \ No newline at end of file diff --git a/native_lib/src/main/cpp/Calculate.h b/native_lib/src/main/cpp/Calculate.h new file mode 100644 index 0000000..502230d --- /dev/null +++ b/native_lib/src/main/cpp/Calculate.h @@ -0,0 +1,25 @@ +#ifndef CPPLIB_LIBRARY_H +#define CPPLIB_LIBRARY_H + +#include +#include "CalculateInfo.h" + +class Calculate { +public: + static Calculate& getInstance(); + int add(int a, int b); + CalculateInfo getInfo(); + + // 删除拷贝构造函数和赋值运算符 + Calculate(const Calculate&) = delete; + Calculate& operator=(const Calculate&) = delete; + +private: + // 构造函数和析构函数私有化 + Calculate() {} + ~Calculate() {} +}; +#endif //CPPLIB_LIBRARY_H + + + diff --git a/native_lib/src/main/cpp/CalculateAdaptor.cpp b/native_lib/src/main/cpp/CalculateAdaptor.cpp index 318cdf3..efdacf5 100644 --- a/native_lib/src/main/cpp/CalculateAdaptor.cpp +++ b/native_lib/src/main/cpp/CalculateAdaptor.cpp @@ -5,7 +5,8 @@ // please include "napi/native_api.h". #include "CalculateAdaptor.h" -#include "library.h" +#include "Calculate.h" +#include "CalculateInfo.h" CalculateAdaptor::CalculateAdaptor() { _calculate = &Calculate::getInstance(); diff --git a/native_lib/src/main/cpp/CalculateAdaptor.h b/native_lib/src/main/cpp/CalculateAdaptor.h index c631727..3b90f01 100644 --- a/native_lib/src/main/cpp/CalculateAdaptor.h +++ b/native_lib/src/main/cpp/CalculateAdaptor.h @@ -7,7 +7,8 @@ #ifndef HM4DEMO_CALCULATOR_H #define HM4DEMO_CALCULATOR_H -#include "library.h" +#include "CalculateInfo.h" +#include "Calculate.h" #include "js_native_api.h" class CalculateAdaptor { diff --git a/native_lib/src/main/cpp/CalculateInfo.h b/native_lib/src/main/cpp/CalculateInfo.h new file mode 100644 index 0000000..ae6a296 --- /dev/null +++ b/native_lib/src/main/cpp/CalculateInfo.h @@ -0,0 +1,17 @@ +// +// Created on 2024/5/28. +// +// 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_CALCULATEINFO_H +#define HM4DEMO_CALCULATEINFO_H + +#include +struct CalculateInfo { + std::string name; + std::string versionName; + int versionCode; +}; + +#endif //HM4DEMO_CALCULATEINFO_H diff --git a/native_lib/src/main/ets/CalculateDefine.ets b/native_lib/src/main/ets/CalculateInfo.ets similarity index 100% rename from native_lib/src/main/ets/CalculateDefine.ets rename to native_lib/src/main/ets/CalculateInfo.ets diff --git a/native_lib/src/main/ets/Calculator.ets b/native_lib/src/main/ets/Calculator.ets index b9970f5..0685efa 100644 --- a/native_lib/src/main/ets/Calculator.ets +++ b/native_lib/src/main/ets/Calculator.ets @@ -1,5 +1,5 @@ import { CalculateAdapter } from 'native_lib.so' -import { CalculateInfo } from './CalculateDefine' +import { CalculateInfo } from './CalculateInfo' export class Calculator {