在.Net Core中,您可以使用[DllImport]进行PInvoke,
但是如果你想动态加载和映射本机api调用,DllImport并不能解决问题.
在Windows上,我们使用DllImport到LoadModule处理了这个问题.然后,您可以使用GetProcAddress将地址映射到您可以调用的委托,从而有效地动态加载api调用.
有没有办法在.Net Core中开箱即用,这样你的逻辑加载工作就可以在Linux,Mac OSX和Windows上跨平台工作?
这可以建立,但我试图看看有没有办法在追逐那只兔子之前做到这一点.
c# asp.net-core-mvc .net-core asp.net-core-1.0 asp.net-core-2.0
我有一个用C++编写的非托管静态库(.dll):
// This is a personal academic project. Dear PVS-Studio, please check it.
// PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
#include "program.h"
struct MyData
{
int32_t index;
char* name;
//uint8_t* data;
};
extern "C" {
__declspec(dllexport) MyData* GetMyData()
{
MyData* ms = new MyData();
ms->index = 5;
ms->name = "Happy string";
//ms->data = new uint8_t[5] { 4, 8, 16, 32, 64 };
return ms;
}
}
Run Code Online (Sandbox Code Playgroud)
'GetMyData'方法返回指向'MyData'对象的指针.
我使用'PInvoke'将此库导入C#projeсt并调用'GetMyData'方法.
// This is a personal academic project. Dear …Run Code Online (Sandbox Code Playgroud)