vs2010编译thrift之compiler出错的处理方法

问题描述

在使用visual studio 2010 SP1编译thrift-0.9.1的compiler时,出现:

The command "flex -o "src\\thriftl.cc" src/thriftl.ll

bison -y -o "src\thrifty.cc" --defines="src/thrifty.hh" src/thrifty.yy

问题原因

flex和bison原本是linux下的可执行程序,windows上需要分别安装bison.exe和flex.exe。

解决步骤

1)下载并安装bison

此处下载bison安装程序,安装路径随意,比如我安装在D:\dev_tools\GnuWin32目录下,安装之后GnuWin32目录下将包括:

-GnuWin32/

--bin/

--contrib/

--doc/

--include/

--info/

--lib/

--man/

--manifest/

--share/

--uninstall/

2)下载并安装flex

此处下载flex解压包,flex包内包含bin,contrib,man以及manifest四个目录。这里将包内的所有文件夹复制到GnuWin32目录,比如我就复制:

flex/bin -> GnuWin32/

flex/contrib -> GnuWin32/

flex/man -> GnuWin32/

flex/manifest ->GnuWin32/

3)添加环境变量

将GnuWin32/bin(需要全路径)添加到Windows环境变量中。

4)重启Visual Studio 2010 SP1。如果不重启,此时编译依然会报错。

5)此时编译会报错Cannot open source file: ‘src\thriftl.cc‘: No such file or directory,原因是compiler工程里边的Pre-Build Event有错。

flex-o "src\\thriftl.cc" src/thriftl.ll

bison -y -o "src\thrifty.cc" --defines="src/thrifty.hh" src/thrifty.yy

flex的语法需要-o之后没有空格,所以需要将-o和src之间的空格去掉,即

flex -o"src\\thriftl.cc" src/thriftl.ll

bison -y -o "src\thrifty.cc" --defines="src/thrifty.hh" src/thrifty.yy

6)接着就是最后一个错误了

Cannot open include file: ‘unistd.h‘: No such file or directory

这里会提示找不到unistd.h,unistd.h是linux下的头文件,相当于Windows下的Windows.h。将thriftl.cc中的#include <unistd.h>屏蔽是没有用的,因为这个文件是自动生成的。

在{thrift}/compiler/cpp目录下建立unistd.h空文件,并将compiler工程属性(Properties -> C/C++ -> General -> Additional Include Directories里加入当前目录.即可。

All Done!

时间: 2025-01-18 07:04:38

vs2010编译thrift之compiler出错的处理方法的相关文章

Android Studio3.1.2编译时Java Compiler出错:Warning: Failed to parse host proxy3.bj...

删除gradle.properties中的代理设置... #移除下面配置systemProp.http.proxyHost=proxy3.bj.petrochina systemProp.http.proxyPort=8080 原文地址:https://www.cnblogs.com/jooy/p/8947816.html

Open Asset Import Library(assimp) vs2010编译

Assimp(Open Asset Import Library)是一个开源的3D模型导入解析库, 可以处理很多种3D文件格式:Collada, Blend, Obj, X, 3DS, LWO, MD5, MD2, MD3, MDL, MS3D等. 现在最新的版本是assimp-3.0. 下面是官方列出的一些特性: Reads more than 30 3D file formats, including Collada, X, 3DS, Blend, Obj Converts them to

在VS2012下不安装VS2010编译VS2010的工程

虽然一路追随这VISUAL SUTDIO在编程,但是断档的情况还是有的,最近一次硬盘问题使得安装了所有的VS2003-VS2012的机器硬盘挂了,无奈只能够安装了,不过觉得没啥用了,就安装一个VS2012不就OK了嘛,不过因为VS2012对VS2010完美支持vcxproj,使得完全可能在VS2012中编译VS2010的工程,但是必须安装IDE,这太麻烦了,有人也提出了不安装VS2010进行工程编译的想法,不过最后也没有得出结论. 之前也有过研究,发现MSBUILD进行编译的需要一套“规则”,都

vs2010 编译多个project问题

使用VS2010 编译从vc6.0复制过来的原project文件源代码.提示错误非常多.感觉无从下手.非常多原始的函数和API參数都提示类型 错误或者不兼容. 百度一下.第一个问题: vc6.0使用ASIIC字符.而VS2010默认选项使用unicode. 在project上面右键属性,把默认字符集改动为 "No Set",例如以下图所看到的 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXljb29sbWU1/font/5a6L5L2T/

亲测VS2010纯静态编译QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序(图文并茂,非常详细)

下载源代码,注意一定是源码压缩包如qt-everywhere-opensource-src-4.8.0.zip,不是Qt发布的已编译的不同版本的标准库如qt-win-opensource-4.8.0-vs2010.exe,这些版本都只是动态编译的,不是我们所需要的.只有用源码包才能做真正的纯静态编译,如果用Qt官网已编译的标准库.exe文件进行编译,有可能出现各种错误,而且编译后的文件巨大,我当时就在这里绕了很大的弯子,请童鞋们注意啦!!可能有些老鸟会笑话,但我本着最严肃的态度告诉菜鸟们,上网查

OSG+QT5+vs2010编译

OSG+QT5+vs2010编译 作者:[email protected]  本文属于原创,转载请注明出处. 由于网上没有找到关于编译QT5环境下的OSG,自己就研究了下,记录下整个过程,希望能帮到大家. 1. 准备工作 下载源代码: A.openscenegraph 3.2.1(当前最新的realease版本) http://www.openscenegraph.org/downloads/developer_releases/OpenSceneGraph-3.2.1.zip B.osg-3r

用vs2010编译vigra静态库及简单使用举例

1.  从 http://ukoethe.github.io/vigra/ 下载最新源代码vigra-1.10.0-src-with-docu.tar.gz,并加压缩到D:\soft\vigra,生成vigra-1.10.0文件夹: 2.  从http://www.cmake.org/cmake/resources/software.html下载CMake并安装: 3.  打开CMake,Where is thesource code: D:/soft/vigra/vigra-1.10.; Wh

使用vs2010编译lua5.1源码生成lua.lib

一.打开vs2010 二.创建项目 新建项目->win32控制台应用程序->下一步->应用程序设置中选择静态库,不勾选预编译头->完成.具体如下图: 三.拷贝源码 将lua源码中的*.h文件拷贝到项目的头文件文件夹下,将lua源码中的*.c文件拷贝到项目的源文件文件夹下. 四.生成lua.lib 项目右键->生成.此时即可在项目的Debug文件夹下看到生成的 lua.lib了. 使用vs2010编译lua5.1源码生成lua.lib,布布扣,bubuko.com

vs2010 编译mosquitto win32版本,开启websockets,实现消息推送

前言:因为之前没有怎么碰vs,只搞过cygwin,而cygwin上搞了好久都搞不定,以至于重新整理思路,这window上的版本应该怎么去编译.一直不知道怎么搞,只能边看其他教程,边自己搞着,连续几天下了班就可以研究编译,特别是在开启websockets的时候,加上libwebsockets库,对于小白来说,特别痛苦.也罢,最后也成功编译. 编译的电脑:MacBook Pro 虚拟机win7,64bit,1.5G的内存 参考:http://blog.csdn.net/Netown_Ethereal