pat*_*vax 5 c# c++ cross-platform dllexport .net-core
我在 GitHub 上找到了DllExport项目,同时正在寻找一种使用普通 C/C++ 中的 C# .NET Core 3 代码的方法。我的目标是能够将 C# 编译为任何动态库,并在 Linux 或 Windows 上使用 dlopen ( dlopen for Windows )使用它。
我正在尝试创建的 C# 库:
using RGiesecke.DllExport;
using System;
namespace CSharpPart
{
public class Test
{
[DllExport]
public static int _add(int a, int b)
{
return a + b;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我试图引用 C# 库的 C/C++ 代码:
#include "CPartCMake.h"
#include "dlfcn.h"
#include "cstring"
using namespace std;
int main()
{
const char* pemodule = "path_to_dll\\CSharpPart.dll";
void* handle = dlopen(pemodule, RTLD_NOW);
typedef int(_cdecl* _add)(int a, int b);
_add pAdd = (_add)dlsym(handle, "_add");
cout << pAdd(5, 7);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
对 dlopen 的调用返回一个非 NULL 句柄,我猜这意味着可以打开库本身。dlsym 返回一个 NULL。当通过DLL 导出查看器查看C# DLL 时,可以确认 DLL 不包含 _add 条目。
我尝试将 C# 项目包装在 C++/CLI 项目中,如此处建议的那样,但它似乎不适用于 .NET Core。
我读到也有可能使用 COM 互操作,但我并没有真正理解它的含义,我不确定它是否可以跨平台工作。
恐怕 DLLExport 还与 .NET Core 不兼容。有没有办法像我描述的那样实现我的目标?
| 归档时间: |
|
| 查看次数: |
1354 次 |
| 最近记录: |