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