跳到主要内容

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静态库文件

    1. 在团结引擎的Inspector中设置如下:

    2. 代码中使用 [DllImport("__Internal")] 调用静态库。例如示例代码中,MyAddFunc()和GetpKey()为静态文件中的接口函数。

  • 调用.so动态库文件

    1. 在团结引擎中Inspector设置如下:

    2. 代码中使用**[DllImport("soName")]**,例如libmytest.so的soName为mytest。