Blazor项目中的C++DLL



我正试图将我在C#中使用的一个小型桌面应用程序带到Blazor中。但我遇到了本地dll的墙。

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

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

[DllImport(@"C:UsersamgsourceCRVentaGenericaCRVentaGenericabinDebugMy.dll", CallingConvention = CallingConvention.StdCall)]
public static extern int My_Initialize(string archivo);

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

浏览器控制台告诉我的错误是;DLLNotFound";。

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

感谢您抽出时间<3.

浏览器控制台告诉我的错误

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

您必须a(将C++编译为WebAssembly,然后b(使用JS Interop加载并调用它。我不知道有什么例子。

Blazor还有一个服务器端应用程序类型。你可以在那里使用DLL,就像在桌面应用程序中一样。

3个解决方案

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

此处的ASP.NET Core示例https://github.com/iso8859/ExposeCppApi

相关内容

  • 没有找到相关文章

最新更新