我正在使用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版本构建
我有原生的非托管 dll,它是静态的,如果我想并行运行它,每次我需要库来做一些工作时都必须加载它。在 .NET 中,我会使用 AppDomain 并在需要时加载此 dll,但在 NET Core 中 AppDomains 已经消失(目前)。我查看了 AssemblyLoadContext,但没有关于 LoadUnmanagedDll 的适当文档。这可以在netstandard1.6中完成吗?
编辑 当前代码使用 PInvoke 调用并且运行良好。问题是因为这个 unmanged dll 的性质,当我尝试并行调用它时会抛出 AccessViolationException,因为两个或多个任务想要访问相同的内存。
如果我可以在某些上下文中每次加载 dll,然后调用 PInvoke,这个问题就会消失。