Я хотел бы использовать C# DLL в Android проекте, который разрабатывается Java (не Xamarin или Mono). Моя первая стратегия решения этой проблемы состоит из следующих шагов:
- Создание пригодной для использования C ++ DLL с помощью DllExport из кода C#. (создайте оболочку C ++ для C# кода)
- Создайте библиотеку .so из проекта C ++, который использует сгенерированную DLL из предыдущего шага.
Итак, я использовал DLLExport (https://github.com/3F/DllExport)
C# Сторона:
namespace NumbersLibCS
{
public class Math
{
public Math()
{
}
[DllExport]
public static int GetRandomEvenNumber()
{
var rnd = new Random();
int n = rnd.Next(1, 1000 ) * 2;
return n;
}
}
}
Но в C ++, чтобы использовать сгенерированную DLL, я думаю, мне следует использовать только windows. h, которая недоступна в ОС Android:
#include <windows.h>
typedef int(__cdecl *GetRandomEvenNumber)();
int main(){
HMODULE lib = LoadLibrary("mycsharp.dll");
auto getRndNumber= (GetRandomEvenNumber)GetProcAddress(lib, "GetRandomEvenNumber");
int c = getRndNumber();
}
Теперь вот мои вопросы:
- Как я могу использовать DLL, сгенерированную DLLExport, без windows .h ?
- Могу ли я использовать .NetCore 2.0 для достижения этой цели без использования DLLExport?