C#如何分别调用静态库&动态库
问题描述
如何在HarmonyOS游戏工程中调用.a静态库文件或.so动态库文件。
Demo参考
将SoSample.package导入到团结引擎项目中即可查看代码。
c++模块代码
#include "NativeCode.h"
char data[12];
extern "C" {
int MyAddFunc(int _a, int _b)
{
return _a + _b;
}
char* GetPkey() {
data[0] = 'O';
data[1] = 'P';
data[2] = 'E';
data[3] = 'N';
data[4] = 'H';
data[5] = 'A';
data[6] = 'R';
data[7] = 'M';
data[8] = 'O';
data[9] = 'N';
data[10] = 'Y';
return data;
}
}
解决方案
调用.a静态库文件和.so动态库文件前,均需把文件放置到Asset/Plugins/OpenHarmony/arm64-v8a路径下。
-
调用.a静态库文件
-
在团结引擎的Inspector中设置如下:
-24-9dedbe6d630e6a38e918ffe8e46b6b4b.png)
-
代码中使用 [DllImport("__Internal")] 调用静态库。例如示例代码中,MyAddFunc()和GetpKey()为静态文件中的接口函数。
-25-681f532de353ede09eff262645e50fff.png)
-
-
调用.so动态库文件
-
在团结引擎中Inspector设置如下:
-26-7e65472d96d9cca3a21e44dccd2d4a1c.png)
-
代码中使用**[DllImport("soName")]**,例如libmytest.so的soName为mytest。
-27-d39e4c165f25facf602dd97d99614289.png)
-