相关疑难解决方法(0)

动态设置DllImport属性

我正在使用PInvoke和DllImport属性使用外部非托管DLL.例如.

[DllImport("mcs_apiD.dll", CharSet = CharSet.Auto)]
private static extern byte start_api(byte pid, byte stat, byte dbg, byte ka);
Run Code Online (Sandbox Code Playgroud)

我想知道是否有可能以某种方式动态地更改dll文件详细信息(在此示例中为mcs_apiD.dll),例如,如果我想针对另一个dll版本构建

c# pinvoke

6
推荐指数
2
解决办法
7172
查看次数

在加载上下文中加载非托管静态 dll

我有原生的非托管 dll,它是静态的,如果我想并行运行它,每次我需要库来做一些工作时都必须加载它。在 .NET 中,我会使用 AppDomain 并在需要时加载此 dll,但在 NET Core 中 AppDomains 已经消失(目前)。我查看了 AssemblyLoadContext,但没有关于 LoadUnmanagedDll 的适当文档。这可以在netstandard1.6中完成吗?

编辑 当前代码使用 PInvoke 调用并且运行良好。问题是因为这个 unmanged dll 的性质,当我尝试并行调用它时会抛出 AccessViolationException,因为两个或多个任务想要访问相同的内存。

如果我可以在某些上下文中每次加载 dll,然后调用 PInvoke,这个问题就会消失。

c# .net-core

3
推荐指数
1
解决办法
1349
查看次数

标签 统计

c# ×2

.net-core ×1

pinvoke ×1