参考:http://blog.csdn.net/sudaobo/article/details/2417660
这里我通过实际的应用,写一篇稍详细的。希望能有帮助。
引子
在编译doubango库时,遇到一个问题,
------ Build started: Project: telepresence (Telepresence\telepresence), Configuration: Debug Win32 ------
Compiling...
OTDocStreamer.cc
e:\work\doubangoxp\doubangoxp\telepresence\include\opentelepresence\docstreamer\otdocstreameropenoffice.h(15) : fatal error C1083: Cannot open include file: 'com/sun/star/beans/XPropertySet.hpp': No such file or directory
OTDocStreamerOpenOffice.cc
e:\work\doubangoxp\doubangoxp\telepresence\include\opentelepresence\docstreamer\otdocstreameropenoffice.h(15) : fatal error C1083: Cannot open include file: 'com/sun/star/beans/XPropertySet.hpp': No such file or directory
Generating Code...
然后,找到idl 在这里:
C:\OpenOffice40\sdk\idl\com\sun\star\beans
然后,我利用微软件的midl直接去编译,出了各种错误。在添加引用目录后,编译器说,语法不兼容。
所以,到网上找了一些解答。看了许多,这个贴子,虽然字最少,看来是最有用的,只是格式有待提高。
http://blog.csdn.net/sudaobo/article/details/2417660
详细的步骤
1. 下载openoffice lib和sdk。
这一点很重要!有一些贴子,忘记说明:应当先装openofficelib,然后再装sdk.
可能是他们觉得,这是自然的过程。但的确,我是走了弯路的,因为我的目标只是编译doubango库,没想到那么多。
所以,这里是一个大坑。转了我许久。
另外,网上许多贴子,目标是用于java,dot net ,等等目标,所以相当麻烦。这也是不必要的,因为我们的目标是给C++调用,只要能把那些idl编译出来就可以。
当然,这里我还是转了弯路,不应当直接编译那些idl,应当从openoffice提供的types.rdb直接生成,C语言的头文件。
这里我没有想到的原因,与前面是相同的原因:没有想到,一定要装openoffice,因为sdk中,没有types.rdb!
现在回想起来,的确是有点头晕。当然,开源的,我们也是参与者,希望以后SDK会做得全一些。
安装包的位置:https://www.openoffice.org/download/index.html
注意,选择自己想要的版本。
openoffice体系的开发,有一个重要的要点是:一切要自己来掌控,不一定要选最新的版本。
另外,openoffice和sdk的版本,要选匹配的。
这里,我是因为找到的doubango 的代码中,用的是4.0.0的版本,所以下的是4.0.0版本。
2. 安装 openoffice和sdk。
看完前面一段,就好办了许多。
因为在装完openoffice后,sdk安装时,自然会装到openoffice目录下面。
这里有一个要点,虽然我不清楚,是不是一定要必须:网上许多文章说,安装目录,一定不能有空格!
有一些怀疑的,但还是照做了,因为很可能网上说的是对的。
这里也是个大坑,装了不下四遍。
因为默认的路径:【c:\program files\openofice 4】里面有两个空格,我第一次比较懒,直接默认,第二次没有注意到openoffice 和 4之间,还有一个空格。所以再一次重装了。
因为咱们的目标是用,不要在这些地方与这些未知的但可能的情况挑战。
装好后:算了,不上图了。没有必要啊。
3. 设置环境变量
这也不是必须的。
但如果考虑到,未来你可能会改变安装目录,还是有必要的。
1)OO_SDK_PATH 设置成为:C:\OpenOffice40\sdk
2)office_programm_dir 设置成为: C:\OpenOffice40\program
3)然后,把这两个路径,加入到path中:
%OO_SDK_PATH%\bin
%office_programm_dir%
注意,如果没有把%office_programm_dir%加入到环境变量的 path中,在执行cppumaker 时,会报错,告知有dll找不到。
所以,在开工前,最好开个命令行窗口,执行一下cppumaker.
4.可以了。
准备开始做与idl相关的C语言头文件吧:
C:\OpenOffice40\sdk\bin>cppumaker -BUCR -O %OO_SDK_PATH%\includecpp %office_programm_dir%/types.rdb
有时会报错:
cppumaker : init registries failed, check your registry files.
这是因为types.rdb 的路径不对。
这里,可以直接写成:
C:\OpenOffice40\sdk\bin>cppumaker -BUCR -O %OO_SDK_PATH%\includecpp C:\OpenOffice40\program/types.rdb
等上几分钟,编译好了。然后去看一下:
C:\OpenOffice40\sdk\includecpp
是不是已有了想要的头文件:
C:\OpenOffice40\sdk\includecpp\com\sun\star\beans
里面已有了:
XPropertySet.hpp
好了,到这里吧。