从官方下载材料
LibreOffice_5.0.3_Win_x86.msi office安装软件
LibreOffice_5.0.3_Win_x86_sdk.msi SDK安装包
先装libreoffice再安装SDK包。
注意,安装libreoffice的过程中,选择安装路径时,注意不要包含()或空格。
我第一次安装的时候,因为是win7 64的操作系统,默认安装的路径是 D:\Program Files (x86) \LibreOffice 5.0.3类似这样的。结果在编译SDK的Demo程序时,总报错。
最终我的安装路径D:\Program\LibreOffice_5
关于安装路径遇到的问题
1、路径带D:\Program Files (x86)带')'的情况,进入sdk目录,运行setsdkenv_windows.bat,将变量设置好之后。 第二次运行此文件时,正常应该显示如下的提示
******************************************************************
*
* SDK environment is prepared for Windows
*
* SDK = D:\Program\LibreOffice_5\sdk
* Office = D:\Program\LibreOffice_5
* Make = C:\MinGW\bin
* Zip = D:\free_software
* cat = C:\MinGW\msys\1.0\bin
* sed = C:\MinGW\msys\1.0\bin
* C++ Compiler = E:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin
* C# and VB.NET compilers = C:\Windows\Microsoft.NET\Framework64\v2.0.50727
* Java = C:\Program Files (x86)\Java\jdk1.6.0
* Special Output directory = c:\libreoffice5.0_sdk
* Auto deployment = YES
*
******************************************************************
但总是遇到报错,此处不应有 \LibreOffice。 不断修改,最终定位到问题所在的代码行
REM Set library path.
set LIB=%OO_SDK_HOME%\lib;%LIB%
if defined CPP_WINDOWS_SDK (
set LIB=%LIB%;%CPP_WINDOWS_SDK%\lib
)
原来是批处理文件中,if define xxxx ( 批处理代码 )。 如果你的libreoffice安装路径带)符号,这里的括号匹配会出错,导致报错。
解决方法,重新安装libreoffice,不带()和空格的路径。 或者,你修改《"C:\Users\Administrator\AppData\Roaming\libreoffice5.0_sdk\setsdkenv_windows.bat"》把里面的if define () 括号中的代码整合在一行,并把()删除。
2、在编译sdk/examples/cpp/DocumentLoader时,在link的时候,总是出错。提示少了 C:\MinGW\msys\1.0\bin\MAP.obj。 这个有点怪了,哪来的Map.obj啊。。。
最后查了makefile,修改sdk\settings\settings.mk。
EXE_LINK_FLAGS=/MAP /OPT:NOREF /SUBSYSTEM:CONSOLE /BASE:0x1b000000 /DEBUGTYPE:cv $(LIBO_SDK_LDFLAGS_STDLIBS)
===> 改成
EXE_LINK_FLAGS=/OPT:NOREF /SUBSYSTEM:CONSOLE /BASE:0x1b000000 /DEBUGTYPE:cv $(LIBO_SDK_LDFLAGS_STDLIBS)
如此之后,documentloader.exe就顺利生成了。
3、在sdk的installation guide说明里面,对win平台下的C++编译器,有这么一段
Windows | Microsoft C++ Compiler, Microsoft Visual Studio 2010 or later, or the Express edition thereof |
于是我最初拿的是VS2012作为开发工具。
结果发现编译完例子documentloader之后,去调试时,总会崩溃在
Reference< XComponentContext > xComponentContext(::cppu::defaultBootstrap_InitialComponentContext());
后面编译release版本,把LibreOffice_5\program目录下的*.dll拷到运行目录,再把SDK目录拷一份到工程目录下,竟然release版本可以调试,不崩溃了。
但后面把拷过来的sdk删除,也不崩溃了。 我纳闷了,问题出在哪了???
不过debug版本,再怎么折腾,还是调试就崩溃。不调试的话,把生成 的exe拷到LibreOffice_5\program目录下,却可以正常运行。
最后抱着玩一玩的精神,把LibreOffice_5\program加到环境变量 path中去。使用VS2008来玩一玩。
神奇的事情发生了。VS2008不管是debug还是release版本都可以正常编译和调试。