Blazor 项目中的 C++ DLL

C++ DLL in Blazor Project

我正在尝试将我用 C# 编写的小型桌面应用程序带到 Blazor。但是我运行被原生dll墙了。

我有一个自己的 C++ dll,但我不知道如何将其带到 blazor。

目前在桌面应用程序中我正在使用以下方法

[DllImport(@"C:\Users\amg\source\CRVentaGenerica\CRVentaGenerica\bin\Debug\My.dll", CallingConvention = CallingConvention.StdCall)]
public static extern int My_Initialize(string archivo);

我一直在寻找信息和/或示例,但没有找到任何可以澄清的内容。

浏览器控制台告诉我的错误是“DLLNotFound”。

有任何迹象表明可以跳过这堵墙吗?

感谢您抽出时间<3.

The error that the browser console tells me

当您在浏览器中看到此内容时,您正在使用 Blazor WebAssembly。你不能在那里使用本地库。

您必须 a) 将 C++ 编译为 WebAssembly,然后 b) 使用 JS Interop 加载和调用它。我不知道一个例子。

Blazor 也有服务器端应用程序类型。您可以像在桌面应用程序中一样使用 DLL。

3 个解决方案

  • 尝试将 C++ 编译为 WebAssembly,如果 C++ 代码不使用第三方库则可能没有源代码。这不是微不足道的。
  • 如果 C++ 代码很短,请将其转换为 C#
  • 对于复杂的 C++ 库,唯一的解决方案是使用 API 机制公开它。 使用 ASP.NET 核心,您可以使用 NativeLibrary.Load。使用 ASP.NET 框架,您可以使用 DllImport。

这里有 ASP.NET 核心的示例 https://github.com/iso8859/ExposeCppApi