首页 > 解决方案 > 在 Java Android 项目中使用 C# Dll

问题描述

我想在由 Java(不是 Xamarin 或 Mono)开发的 Android 项目中使用 C# DLL。我解决此问题的第一个策略包含以下步骤:

  1. 通过 DllExport 从 C# 代码创建一个 C++ 可用的 DLL。(为 C# 代码创建 C++ 包装器)
  2. 从使用上一步生成的 DLL 的 C++ 项目创建一个 .so 库。

所以我使用了 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,我认为我应该只使用 Android OS 上不可用的 windows.h 库:

#include <windows.h>

typedef int(__cdecl *GetRandomEvenNumber)();
int main(){
 HMODULE lib = LoadLibrary("mycsharp.dll");
 auto getRndNumber= (GetRandomEvenNumber)GetProcAddress(lib, "GetRandomEvenNumber");
 int c = getRndNumber();
}

现在这是我的问题:

  1. 如何在没有 windows.h 的情况下使用 DLLExport 生成的 DLL?
  2. 我可以在不使用 DLLExport 的情况下使用 .NetCore 2.0 来实现这一点吗?

标签: c#androidc++.net-coredllexport

解决方案


推荐阅读