相关疑难解决方法(0)

你能在.Net Core中动态加载跨平台的Native/Unmanaged dll/libs吗?

在.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

7
推荐指数
2
解决办法
2422
查看次数

将非托管C++指针转换为对象到托管C#对象

我有一个用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)

.net c# c++ pinvoke marshalling

5
推荐指数
1
解决办法
1111
查看次数