libreoffice VS开发过程遇到的问题


从官方下载材料

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版本都可以正常编译和调试。

你可能感兴趣的:(libreoffice)