Difference between revisions of "Zh/Documentation/DevGuide/ProUNO/C++/Transparent Use of Office UNO Components"
m |
|||
Line 36: | Line 36: | ||
<code>::cppu::bootstrap()</code> 函数以与 Java <code>com.sun.star.comp.helper.Bootstrap.bootstrap()</code> 方法相类似的方式来实现。它首先通过调用 <code>::cppu::defaultBootstrap_InitialComponentContext()</code> 函数来引导本地组件上下文,然后通过使用 <code>com.sun.star.bridge.UnoUrlResolver</code> 服务试图建立到正在运行的办公软件的命名管道连接。如果没有任何办公软件在运行,则将启动一个 Office 进程。如果连接成功,则将返回远程组件上下文。 | <code>::cppu::bootstrap()</code> 函数以与 Java <code>com.sun.star.comp.helper.Bootstrap.bootstrap()</code> 方法相类似的方式来实现。它首先通过调用 <code>::cppu::defaultBootstrap_InitialComponentContext()</code> 函数来引导本地组件上下文,然后通过使用 <code>com.sun.star.bridge.UnoUrlResolver</code> 服务试图建立到正在运行的办公软件的命名管道连接。如果没有任何办公软件在运行,则将启动一个 Office 进程。如果连接成功,则将返回远程组件上下文。 | ||
− | {{ | + | {{Warn|从 {{PRODUCTNAME}} 2.0 开始才有 <tt>::cppu::bootstrap()</tt> 函数。}} |
Latest revision as of 08:29, 13 July 2018
编写 C++ 客户机应用程序时,可以更加透明的方式获取 Office 组件上下文。有关详细信息,请参阅 专业 UNO - UNO 语言绑定 - Java 语言绑定 - Office UNO 组件的透明使用 一节。
引导函数
C++ 也提供引导函数,该函数从 UNO 安装引导组件上下文。简单客户机应用程序的一个示例显示了以下代码 snipplet:
// get the remote office component context Reference< XComponentContext > xContext( ::cppu::bootstrap() ); // get the remote office service manager Reference< XMultiComponentFactory > xServiceManager( xContext->getServiceManager() ); // get an instance of the remote office desktop UNO service // and query the XComponentLoader interface Reference < XComponentLoader > xComponentLoader( xServiceManager->createInstanceWithContext( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.frame.Desktop" ) ), xContext ), UNO_QUERY_THROW );
::cppu::bootstrap()
函数以与 Java com.sun.star.comp.helper.Bootstrap.bootstrap()
方法相类似的方式来实现。它首先通过调用 ::cppu::defaultBootstrap_InitialComponentContext()
函数来引导本地组件上下文,然后通过使用 com.sun.star.bridge.UnoUrlResolver
服务试图建立到正在运行的办公软件的命名管道连接。如果没有任何办公软件在运行,则将启动一个 Office 进程。如果连接成功,则将返回远程组件上下文。
SDK tooling
为了方便起见,OpenOffice.org 软件开发工具包 (SDK) 提供了一些用于编写 C++ 客户机应用程序的工具。
应用程序加载器
使用 UNO 的 C++ 客户机应用程序与 C++ UNO 程序库链接,该程序库可以在 UNO 安装的程序目录中找到。运行客户机应用程序时,如果 UNO 程序目录包含在 PATH
(Windows) 或 LD_LIBRARY_PATH
(Unix/Linux) 环境变量中,则只能找到 C++ UNO 程序库。
由于需要知道 UNO 的安装位置,因此,对于 Windows,SDK 提供了应用程序加载器 unoapploader.exe
(对于 Unix/Linux,SDK 提供了 unoapploader
),该加载器可以在系统上检测到 UNO 安装,并将 UNO 安装的程序目录添加到 PATH
/ LD_LIBRARY_PATH
环境变量。之后,加载并启动应用程序进程,新进程由此继承调用进程的环境,包括已修改的 PATH
/ LD_LIBRARY_PATH
环境变量。
SDK 工具允许建立客户机可执行文件(例如,对于 Unix/Linux 为 SimpleBootstrap_cpp
),该文件可以通过以下方法调用:
./SimpleBootstrap_cpp
在这种情况下,SimpleBootstrap_cpp
可执行文件可以直接重命名为 unoapploader
可执行文件。所有应用程序代码都是第二个可执行文件的一部分,该文件必须与第一个可执行文件同名,但需要以下划线 '_
' 为前缀;在上面示例中,这意味着第二个可执行文件的名称为 _SimpleBootstrap_cpp
。
在 Unix/Linux 平台上,应用程序加载器将错误消息写入 stderr
流。在 Windows 平台上,错误消息被写入应用程序可执行文件目录中的错误文件 <application name>-error.log
。如果无法写入,则错误文件被写入临时文件指定的目录。
查找 UNO 的安装路径
UNO 的安装路径可以由用户通过将 UNO_PATH
环境变量设置为 UNO 安装的程序目录来指定,例如
setenv UNO_PATH /opt/OpenOffice.org/program
如果用户未指定 UNO 的安装位置,则将接受系统中的默认安装位置。
在 Windows 平台上,通过从 Windows 注册表中的根项 HKEY_CURRENT_USER 读取默认值项 'Software\OpenOffice.org\UNO\InstallPath',即可找到默认安装路径。如果没有此项,则可以从根项 HKEY_LOCAL_MACHINE 读取。
在 Unix/Linux 平台上,默认安装路径可以从 PATH 环境变量找到。这种方法要求 soffice 可执行文件或符号链接位于 PATH 环境变量中列出的目录之一。
Content on this page is licensed under the Public Documentation License (PDL). |