【发布时间】:2015-08-21 20:31:32
【问题描述】:
我在 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/[项目文件]),所以我将项目文件移动到上层文件夹并删除无关文件夹。当我这样做时,我使用的 .sln 具有主项目,而我使用的 dll 无法找到 LibreOfficePlug 项目(因为我移动了它)。所以我从 .sln 中删除了该项目并尝试重新添加它。起初我不小心将 LibreOfficePlug .sln 文件添加到主项目资源文件中,但我从那里删除了它并正确地将 LibreOfficePlug 项目添加到解决方案中。同样,这些事情似乎都可能无关紧要,但我想我会重新叙述导致它崩溃的事件,以防万一。
【问题讨论】:
标签: c# c++ exception external libreoffice