LibreOffice 5 Bootstrap.bootstrap抛出ExternalException,错误代码为-2147467259

时间:2015-08-21 20:31:32

标签: c# c++ exception external libreoffice

我在LibreOffice 4中为LibreOffice编写了一个C#.dll,并编译并运行正常。我下载了LibreOffice 5并获得了插件。我做了一些似乎必须是红色鲱鱼的事情,现在当我尝试调用Bootstrap.bootstrap()时,它返回一个ExternalException,消息为"外部组件抛出异常。"我的预感是bootstrap无法找到LibreOffice安装,但它在过去一直运行良好。

堆栈跟踪看起来像这样

at cppu.bootstrap(Reference<com::sun::star::uno::XComponentContext>*) at uno.util.Bootstrap.bootstrap() at LibreOfficePlug.Office.getPDF(String fileURL) in C:\\projects\\zbuildsrc\\LibreOfficePlug\\Office.cs:line 20

Office.cs是类的名称,getPDF是获取URL并将其转换为PDF的函数

.dll仍然编译好,我仍然可以从主项目访问该函数,但是当它调用Bootstrap.bootstrap()时会在LibreOffice代码中抛出异常,所以我不知道如何挖掘问题的根源。我调用dll的项目是用C ++编写的,但我在C#编写了这个dll,如果这有所不同的话。

我所做的事情我非常肯定是红色鲱鱼如下(这些都发生在我成功使用libreoffice 5的dll之后)

我注意到我存放我的dll的文件夹嵌套在另一个同名的文件夹里(即LibreOfficePlug / LibreOfficePlug / [project files]),所以我把项目文件移到了上层文件夹并删除无关的文件夹。当我这样做时,使用它的.sln有主项目和我使用的dll无法找到LibreOfficePlug项目(因为我移动了它)。所以我从.sln中删除了该项目,并尝试重新添加它。起初我偶然将LibreOfficePlug .sln文件添加到主项目资源文件中,但我从那里删除它并正确地将LibreOfficePlug项目添加到解决方案中。同样,这些事情似乎都可能与他们无关,但我想我会重述导致它破裂的事件,以防万一。

1 个答案:

答案 0 :(得分:1)

我也面临同样的问题。我所做的是将LibreOffice 4 URE文件夹复制到当前的LibreOffice 5文件夹中。在此之后它工作正常。你可以尝试一下。