- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用的是 macOS High Sierra 10.13.6
我安装的thrift如下:
$ brew install thrift
是以下版本:
$ thrift --version
Thrift version 0.11.0
我安装的boost如下:
$ brew install boost
我有以下 model.thrift 文件:
struct Person {
1: required i32 age;
}
我运行Thrift编译器生成cpp代码如下:
$ thrift -gen cpp model.thrift
我必须遵循包含生成代码的 cpp_encode.cpp 文件:
#include "gen-cpp/model_types.h"
int main(int argc, char const *argv[])
{
return 0;
}
我尝试按如下方式编译文件:
$ g++ -Wall -I /usr/local/include -L /usr/local/lib -o cpp_encode cpp_encode.cpp
编译版本如下:
$ g++ --version
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 9.1.0 (clang-902.0.39.2)
Target: x86_64-apple-darwin17.7.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
我得到以下编译错误:
$ g++ -Wall -I /usr/local/include -L /usr/local/lib -o cpp_encode cpp_encode.cpp
In file included from cpp_encode.cpp:1:
In file included from ./gen-cpp/model_types.h:14:
In file included from /usr/local/include/thrift/TBase.h:24:
In file included from /usr/local/include/thrift/protocol/TProtocol.h:28:
In file included from /usr/local/include/thrift/transport/TTransport.h:24:
/usr/local/include/thrift/stdcxx.h:32:10: fatal error: 'boost/tr1/functional.hpp' file not found
#include <boost/tr1/functional.hpp>
目录/usr/local/boost目录存在:
$ ls -1 /usr/local/include/boost
accumulators
algorithm
align
align.hpp
aligned_storage.hpp
any.hpp
archive
[...]
但是目录/usr/local/include/boost/tr1不存在:
$ ls -1 /usr/local/include/boost/tr1
ls: /usr/local/include/boost/tr1: No such file or directory
我应该安装/usr/local/include/boost/tr1 吗?如果是,怎么办?
我应该以不同的方式使用 Thrift 吗?
最佳答案
您可以查看导致包含boost/tr1/functional
的代码在 thrift/stdcxx.h
#if defined(BOOST_NO_CXX11_HDR_FUNCTIONAL) || (defined(_MSC_VER) \
&& _MSC_VER < 1800) || defined(FORCE_BOOST_FUNCTIONAL)
#include <boost/tr1/functional.hpp>
#define _THRIFT_FUNCTIONAL_TR1_ 1
#endif
因为我们可以安全地假设您的 MacOS g++ 没有定义 _MSC_VER
只剩下两个选项之一:要么你自己定义了 FORCE_BOOST_FUNCTIONAL
宏(不太可能),或 BOOST_NO_CXX11_HDR_FUNCTIONAL
未定义。
通过查看 boost config documentation我们发现BOOST_NO_CXX11_HDR_FUNCTIONAL
定义时
The standard library does not provide a C++11 compatible version of < functional >.
因为我不知道苹果的 LLVM 版本如何映射到真正的 LLVM 版本,所以我无法判断你的 clang 版本是否默认启用了 C++11,但我最好的猜测是你需要手动启用它.唯一的另一种选择是存在一个 boost 配置错误,该错误导致 clang 被识别为不具有 C++11 <functional>
.
要测试你的clang版本是否默认启用了C++11,你可以尝试编译一个包含以下内容的文件
int main()
{
return []() -> int { return 0; }
}
不设置任何编译器标志。
总结一下:
FORCE_BOOST_FUNCTIONAL
宏观-std=c++11
到编译器标志列表关于c++ - "thrift -gen cpp"生成的代码无法在 macOS : 'boost/tr1/functional.hpp' file not found 上编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52340266/
第 0 代:所以我读到当 gen 0 超过大小阈值时 gen 0 触发。但我也读到GC不是在"new"时执行的,因为"new"只是向前滑动一个地址。那么,它什么时候检查它是否超过了触发 gen 0 G
“static final”是直接分配到young gen还是old gen还是perm gen? (我想它很可能会在我想的时间内落入老一代。)如果它在 perm gen 中分配,那么当在 Perm
这是一种情况,当必须将并行性引入后端服务器时。 我愿意查询 N 个 ELB,每个查询 5 个不同的查询,并将结果发送回 Web 客户端。 后端是Tornado,根据我在docs中多次阅读的内容,在过去
我正在尝试创建列表的随机排列。我是函数式语言中随机性的新手,还没有完全掌握 monad,但我以我认为应该有效的方式使用了 Random.newStdGen 和 Random.Shuffle.shuff
经过 tornado.gen documentation有人可以帮我理解 tornado.gen.coroutine 和 tornado.gen.engine 之间的确切区别 最佳答案 正如 gen.
在 document , 如果方法也用@gen.coroutine 修饰,则不需要@web.asynchronous。像这样 @web.asynchronous @gen.coroutine def
我们在带有相量的同一个 gen~ 代码框对象中有两个地方: wander = phasor(in8/dense); ...some code later... phas = (triangle(pha
我正在从事的项目都是用 Tornado 编写的,但我包含了一些 Twisted 来处理异步 XML-RPC。我想知道您是否可以使用 Tornado 的 gen.engine 和 yield gen.T
如何查看protoc-gen-go和protoc-gen-validate的版本? protoc-gen-go --version protoc-gen-validate --version 我试过上
我们使用的是 protoc-gen-go v2(v2 是 google.golang.org/protobuf,v1 是 github.com/golang/protobuf) 当我们尝试编译 gRP
刚接触tornado,所以跟着tornado的指导练习,当我开始使用Coroutines的时候,例子是这样说的: 从 Tornado 导入生成 @gen.coroutine def fetch_cor
当您创建 Python 3 生成器并立即开始运行它时。您会收到如下错误: TypeError: can't send non-None value to a just-started generato
当我在 eclipse 中清理和构建 android 项目时,它会删除 bin 文件夹和 gen 文件夹的内容,并且不会重新创建它只是创建空文件夹 gen 和 bin 为什么会发生这种情况我搜索了很多
我想使用来自 protoc-gen-grpc-kotlin 的 protoc-gen-grpc-kotlin-1.0.0我得到了 Execution failed for task ':generat
我想使用来自 protoc-gen-grpc-kotlin 的 protoc-gen-grpc-kotlin-1.0.0我得到了 Execution failed for task ':generat
在 :constructors 映射和后续的 -init 定义中,我如何表示可变参数构造函数(假设父类(super class)有多个构造函数,其中一个是可变参数)? 最佳答案 由于可变参数本质上是对
我正在使用jwilder/nginx-proxy,以便在我的domain.tld中有一个项目,在api.domain.tld中有一个项目。我关注了this tutorial,自定义default.co
我刚刚重新格式化了我的电脑。我有 windows xp sp3 32 位。我安装java jdk安卓SDK eclipse ide 当我去创建一个新的 android 项目时,我得到了这个错误。 项目
我正在开发我的 Android 项目,删除未使用的库后,我收到 错误: myproject/gen already exists but is not a source folder. Convert
protoc-gen-doc 自定义模板规则详解 配套演示工程 此项目中所用 proto 文件位于 ./proto 目录下,来源于 官方proto示例 此项目中所列所有
我是一名优秀的程序员,十分优秀!