在 .NET Core 中使用 LibreOffice 时出现“引导程序句柄无法初始化”错误?

问题描述 投票:0回答:1

我尝试使用 .NET Core 来使用 LibreOffice,但遇到一条错误,提示“引导句柄未初始化”。

using unoidl.com.sun.star.uno; 
m_xContext = uno.util.Bootstrap.bootstrap();

' 我尝试过克隆源代码并自己调试,但它相当复杂,而且我似乎总是走进了死胡同。经过一番调查,我意识到指针始终为空。

我在https://kenbonny.net/consuming-a-c-dll-in-dotnet-core上看到一篇文章,并尝试使用以下代码:

private static extern bool FreeLibrary(IntPtr libraryReference);
[DllImport("C:\\development\\libreoffice-uno-dotnet-main\\DLL\\cli_cppuhelper.dll", EntryPoint = "defaultBootstrap_InitialComponentContext", SetLastError = true, CallingConvention = CallingConvention.Cdecl)]

但是,我始终收到一条错误消息,指出找不到该方法。我还尝试了以下代码:

var registerPointer = GetProcAddress(_dllPointer, "defaultBootstrap_InitialComponentContext");
if (registerPointer == IntPtr.Zero)
    throw new System.Exception("Something went wrong!");
// dotnet 4.X aka full framework
var registerCallback = (RegisterCallback)Marshal.GetDelegateForFunctionPointer(registerPointer, typeof(RegisterCallback));
var registerResult = registerCallback(_keepAlive);

但是我仍然遇到指针为空的问题。有没有人尝试找到将 LibreOffice 与 .NET Core 结合使用的解决方案或找到任何解决方法?

需要注意的是,将 LibreOffice 等复杂软件与 .NET Core 集成可能需要丰富的专业知识,并且由于兼容性和技术挑战,这并不总是那么简单。

.net-core libreoffice kernel32
1个回答
0
投票

如果这是一个已知的错误,那么这就是答案,无需进一步询问。您能做的最好的事情是将您的电子邮件添加到错误的抄送列表中,或者可能雇用某人来处理该错误。

虽然我还没有尝试过最新的 .NET 版本,但我过去已经使用了 C# SDK 示例。

Java 与 LibreOffice 的集成比 .NET 进行了更好的测试且更可靠,因此也许这是可以考虑的替代方案。

© www.soinside.com 2019 - 2024. All rights reserved.