Используйте C# Dll в Java Android Project - PullRequest
3 голосов
/ 19 июня 2020

Я хотел бы использовать C# DLL в Android проекте, который разрабатывается Java (не Xamarin или Mono). Моя первая стратегия решения этой проблемы состоит из следующих шагов:

  1. Создание пригодной для использования C ++ DLL с помощью DllExport из кода C#. (создайте оболочку C ++ для C# кода)
  2. Создайте библиотеку .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();
}

Теперь вот мои вопросы:

  1. Как я могу использовать DLL, сгенерированную DLLExport, без windows .h ?
  2. Могу ли я использовать .NetCore 2.0 для достижения этой цели без использования DLLExport?
...