xapian 1.2.x在VC下编译问题的浅析(可能是一)
来源:互联网 发布:淘宝好的军品店 编辑:程序博客网 时间:2024/06/08 02:26
这几日想研究下doxygen,发现其include了xapian.h,一败毒发现是个字符串查找库,正好字符串查找也是研究重点之一,下了份xapian 1.2.8准备编译。结果出现
NMAKE : fatal error U1073: 不知道如何生成“"pian\xapian-core-1.2.8\config.h"”
Stop.
NMAKE : fatal error U1077: “"C:\Program Files\Microsoft Visual Studio 9.0\VC\BI
N\nmake.EXE"”: 返回代码“0x2”
Stop.
这个错误。
本人很奇怪,不知为何会有pian\这个路径,用工具搜索,发现common\Makefile中有如下内容:
#Automatically generated dependencies from XAPDEP follow:
bitstream.obj : "pian\xapian-core-1.2.8\config.h"
bitstream.obj : "pian\xapian-core-1.2.8\common\bitstream.h"
bitstream.obj : "apian\xapian-core-1.2.8\include\xapian/types.h"
bitstream.obj : "apian\xapian-core-1.2.8\include\xapian/visibility.h"
bitstream.obj : "xapian\xapian-core-1.2.8\include\xapian/version.h"
bitstream.obj : "rogram Files\Microsoft Visual Studio 9.0\VC\INCLUDE\string"
bitstream.obj : "Program Files\Microsoft Visual Studio 9.0\VC\INCLUDE\istream"
bitstream.obj : "\Program Files\Microsoft Visual Studio 9.0\VC\INCLUDE\ostream"
bitstream.obj : ":\Program Files\Microsoft Visual Studio 9.0\VC\INCLUDE\ios"
bitstream.obj : "C:\Program Files\Microsoft Visual Studio 9.0\VC\INCLUDE\xlocnum"
bitstream.obj : "C:\Program Files\Microsoft Visual Studio 9.0\VC\INCLUDE\climits"
bitstream.obj : "C:\Program Files\Microsoft Visual Studio 9.0\VC\INCLUDE\yvals.h"
bitstream.obj : "C:\Program Files\Microsoft Visual Studio 9.0\VC\INCLUDE\crtdefs.h"
bitstream.obj : "C:\Program Files\Microsoft Visual Studio 9.0\VC\INCLUDE\sal.h"
很明显路径有问题,cl找不到对应文件自然编译不过。
造成自个问题的原因很可能就是那个XAPDEP 。
win32目录下有个XAPDEP 目录,里面有XAPDEP 的源代码。
看题头是2010年写的,但是写的非常简单草率,我只能这么认为。
它的主要功能是从deps.d文件中提取需要的文件路径再添加到MAKEFILE文件中去。
但是deps.d文件中是什么样呢?
注意: 包含文件: C:\xapian\xapian-core-1.2.8\config.h
注意: 包含文件: c:\xapian\xapian-core-1.2.8\common\bitstream.h
注意: 包含文件: C:\xapian\xapian-core-1.2.8\include\xapian/types.h
注意: 包含文件: C:\xapian\xapian-core-1.2.8\include\xapian/visibility.h
注意: 包含文件: C:\xapian\xapian-core-1.2.8\include\xapian/version.h
注意: 包含文件: C:\Program Files\Microsoft Visual Studio 9.0\VC\INCLUDE\string
注意: 包含文件: C:\Program Files\Microsoft Visual Studio 9.0\VC\INCLUDE\istream
注意: 包含文件: C:\Program Files\Microsoft Visual Studio 9.0\VC\INCLUDE\ostream
注意: 包含文件: C:\Program Files\Microsoft Visual Studio 9.0\VC\INCLUDE\ios
注意: 包含文件: C:\Program Files\Microsoft Visual Studio 9.0\VC\INCLUDE\xlocnum
注意: 包含文件: C:\Program Files\Microsoft Visual Studio 9.0\VC\INCLUDE\climits
注意: 包含文件: C:\Program Files\Microsoft Visual Studio 9.0\VC\INCLUDE\yvals.h
注意: 包含文件: C:\Program Files\Microsoft Visual Studio 9.0\VC\INCLUDE\crtdefs.h
注意: 包含文件: C:\Program Files\Microsoft Visual Studio 9.0\VC\INCLUDE\sal.h
是这样。
而XAPDEP 是怎么处理的捏?
/* clean up the dependencies and write them to the makefile */
ch = INSET;
endch = strlen( buf );
/* skip space */
while ( (ch < endch) && (buf[ch] != '\r') && (buf[ch] == ' ') )
{
ch ++;
}
fputs( objfile, outmak );
fputs( ".obj : \"", outmak );
while ( (ch < endch) && (buf[ch]!='\r') )
{
putc( buf[ch++], outmak );
}
fputs( "\" \r\n", outmak );
很简单,先去掉字符串的前INSET个字符(这里的INSET值为22),这样“注意: 包含文件: ”的长度不够,造成路径的前几个字符也一并截取掉了。
解决办法:
1.改小INSET的值。 最贱的是改成ch = strlen ( "注意: 包含文件:" );
2.重写XAPDEP,做成一个更健壮易用的程序。
- xapian 1.2.x在VC下编译问题的浅析(可能是一)
- OCCI在VC下的编译问题
- xapian编译问题
- 大数据下xapian建索引速度问题可能的解决方案以及索引数据的压缩处理
- 使用nmake在windows平台下编译xapian
- 【转】使用nmake在win32平台下编译xapian
- 使用nmake在windows平台下编译xapian
- windows下xapian的编译以及编程环境的配置
- GNU flex unistd.h在VC下的编译问题
- XAPIAN简介(一)
- cocos2d-x在NDK r9下的编译问题
- quick-cocos2d-x 在 Windows 下的编译环境尝试(一)
- 这可能是最好的RxJava 2.x 入门教程(一)
- 这可能是最好的RxJava 2.x 入门教程(一)
- Xapian在Ubuntu下的安装和测试
- ubuntu13.10(楼主是在麒麟系统下测试的)下ns2环境搭建和可能遇到的问题及解决办法
- jrtplib在vc下的编译
- Lua Lib在VC下的编译
- 11月18,时隔3个多月,又开始了acm
- 接上一篇改篇:Java EE7,Tomcat8,HTML5,WebSocket1编码器与解码器的例子
- UVA 10245 (13.11.08)
- 数学专项number_theory:UVa 10236
- 阿里云主机中apache的主页
- xapian 1.2.x在VC下编译问题的浅析(可能是一)
- 查看数据库连接数
- 不只是技术!成为IT经理必备的十大软技能
- ruby中的一个问题
- StoryBoard可能出现错误解决
- [数据结构学习]单链表常用操作
- 1108
- 切换镜像SYSADMIN权限赋予
- openGL学习之安装配置(一)