我在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项目添加到解决方案中。同样,这些事情似乎都可能与他们无关,但我想我会重述导致它破裂的事件,以防万一。
答案 0 :(得分:1)
我也面临同样的问题。我所做的是将LibreOffice 4 URE文件夹复制到当前的LibreOffice 5文件夹中。在此之后它工作正常。你可以尝试一下。