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
我正在尝试将我用 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