Apache Thrift 教程中的 C++ 链接器错误 - 未定义的符号

2023-12-03

我正在运行 Apache 的 Thrift 教程:http://wiki.apache.org/thrift/ThriftUsageC%2B%2B我的 Thrift 版本是 0.9.1,我使用的是 OS X。我在本教程中搜索了类似的问题,虽然其他人也遇到了问题,但他们似乎与我遇到的问题并不相似。我有。

服务器可以正确编译和链接,客户端也可以正确编译。问题是在教程的最后一步链接客户端,我得到这个:

Undefined symbols for architecture x86_64:
  "apache::thrift::transport::TSocket::TSocket(std::string, int)", referenced from:
      _main in Something_client-e25162.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我通过该教程中的示例 Makefile 以及整个教程中的命令行构建过程收到了同样的错误。我的客户端代码是

我在 OS X 上运行,所以我添加了-stdlib=libstdc++到命令行过程中的每一行。下面是我用来编译/链接的 Bash 示例(我的初始 Thrift 文件是 example.thrift):

#!/bin/bash

# Server
# Writing out each .cpp to compile, as opposed to the tutorial which uses *.cpp,
# since my client code is in the same directory.
g++ -stdlib=libstdc++ -DHAVE_INTTYPES_H -DHAVE_NETINET_IN_H -Wall -I/usr/local/include/thrift Something.cpp Something_server.cpp sample_constants.cpp sample_types.cpp -L/usr/local/lib -lthrift -o something

g++ -stdlib=libstdc++ -Wall -I/usr/local/include/thrift -c Something.cpp -o something.o
g++ -stdlib=libstdc++ -Wall -I/usr/local/include/thrift -c Something_server.cpp -o server.o
g++ -stdlib=libstdc++ -Wall -I/usr/local/include/thrift -c sample_constants.cpp -o constants.o
g++ -stdlib=libstdc++ -Wall -I/usr/local/include/thrift -c sample_types.cpp -o types.o

g++ -stdlib=libstdc++ -L/usr/local/lib *.o -o Something_server -lthrift

# Client
g++ -stdlib=libstdc++ -Wall -I/usr/local/include/thrift -c Something_client.cpp -o client.o

# THIS LINE PRODUCES THE UNDEFINED SYMBOLS ERROR - all of the above are successful
g++ -stdlib=libstdc++ -L/usr/local/lib client.o something.o constants.o types.o -o Something_client -lthrift

任何帮助,将不胜感激。我不明白为什么它找不到TSocket实施即使libthrift包含在链接器调用中。


我在 OSX Mavericks 上遇到了类似的情况(我相信),这是不久前的事了。既然你也使用 clang,我想你可能也在使用 OSX?

无论如何,我最终所做的是根据 C++11 标准进行编译并用于 stdliblibc++相对于libstdc++。当前版本的 clang 可以很好地处理这两种情况。

所以你的编译行最终可能看起来像这样:

g++ -std=c++11 -stdlib=libc++ -DHAVE_INTTYPES_H -DHAVE_NETINET_IN_H -Wall -I/usr/local/include/thrift Foo.cpp Foo_server.cpp foo_constants.cpp foo_types.cpp -L/usr/local/lib -lthrift -o foo

我还隐约记得我不得不在 linux 和 gcc 上求助于 c++0x,但这些取决于编译器/版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apache Thrift 教程中的 C++ 链接器错误 - 未定义的符号 的相关文章

  • Qt - QProcess 不工作

    我尝试启动 Internet Explorer 所以我使用下面的代码 QProcess process new QProcess this QString temp C Program Files Internet Explorer iex
  • 尝试了解使用服务打开对话框

    我已经阅读了有关使用 mvvm 模式打开对话框的讨论 我看过几个使用服务的示例 但我不明白所有部分如何组合在一起 我发布这个问题寻求指导 以了解我应该阅读哪些内容 以更好地理解我所缺少的内容 我将在下面发布我所拥有的内容 它确实有效 但从我
  • Grpc - 将消息从一个客户端发送到连接到同一服务器的另一个客户端

    是否可以将消息从一个客户端发送到连接到同一服务器的另一个客户端 我想将数据从一个客户端发送到服务器然后发送到特定客户端 我想我需要获取客户端 ID 但我不知道如何获取此 ID 以及如何从服务器将此消息发送到该客户端 我这里有一个样本 这是一
  • 将类对象放置在向量中?

    我注意到我可以将一个类放置在一个向量中 这是我的程序 我收到以下错误 out blackjack exe blackjack obj blackjack obj error LNK2019 unresolved external symbo
  • 循环遍历 C 结构中的元素以提取单个元素的值和数据类型

    我有一个要求 我有一个 C 语言的大结构 由大约 30 多个不同数据类型的不同元素组成 typedef struct type1 element1 type2 element2 type3 element3 type2 element4 1
  • 传递 constexpr 对象

    我决定给予新的C 14的定义constexpr旋转并充分利用它 我决定编写一个小的编译时字符串解析器 然而 我正在努力保持我的对象constexpr将其传递给函数时 考虑以下代码 include
  • 如何将 SOLID 原则应用到现有项目中

    我对这个问题的主观性表示歉意 但我有点卡住了 我希望之前处理过这个问题的人能够提供一些指导和建议 我有 现在已经成为 一个用 C 2 0 编写的非常大的 RESTful API 项目 并且我的一些类已经变得巨大 我的主要 API 类就是一个
  • 处理右值时的 insert 与 emplace

    std string myString std unordered set
  • C++中判断unicode字符是全角还是半角

    我正在编写一个终端 控制台 应用程序 该应用程序应该包装任意 unicode 文本 终端通常使用等宽 固定宽度 字体 因此要换行文本 只需计算字符数并观察单词是否适合一行并采取相应的操作 问题是 Unicode 表中的全角字符在终端中占用了
  • 如何使用 x64 运行 cl?

    我遇到了和这里同样的问题致命错误 C1034 windows h 未设置包含路径 https stackoverflow com questions 931652 fatal error c1034 windows h no include
  • 从网页运行 ClickOnce 应用程序,无需用户操作

    我们有一个基于 Java 的 Web 应用程序以及用 C 编写的相同应用程序 如果 java 检查器发现客户端计算机上没有安装 Java 则应该运行该应用程序 这个想法是运行 C 单击一次 http en wikipedia org wik
  • 模板外部链接?谁能解释一下吗?

    模板名称具有链接 3 5 非成员函数模板可以有内部链接 任何其他模板名称应具有外部链接 从具有内部链接的模板生成的实体与在其他翻译单元中生成的所有实体不同 我知道使用关键字的外部链接 extern C EX extern C templat
  • 将二变量 std::function 转换为单变量 std::function

    我有一个函数 它获取两个值 x 和 y 并返回结果 std function lt double double double gt mult double x double y return x y 现在我想得到一个常量 y 的单变量函数
  • 将 Word 转换为 PDF - 禁用“保存”对话框

    我有一个用 C 编写的 Word 到 PDF 转换器 除了一件事之外 它工作得很好 有时 在某些 Word 文件上 后台会出现一条消息保存源文件中的更改 gt 是 否 取消 但我没有对源文件进行任何更改 我只想从 Word 文件创建 PDF
  • 如何最好地以编程方式将 `__attribute__ ((unused))` 应用于这些自动生成的对象?

    In my makefile我有以下目标 它将文本 HTML 资源 编译 为unsigned char数组使用xxd i http linuxcommand org man pages xxd1 html 我将结果包装在匿名命名空间和标头保
  • 模板类的模板构造函数的 C++ 显式模板特化

    我有一个像这样的课程 template
  • WPF DataGrid / ListView 绑定到数组 mvvm

    我们假设你有 N 个整数的数组 表示行数的整数值 在模型中 该整数绑定到视图中的 ComboBox Q1 如何将数组 或数组的各个项目 绑定到 DataGrid 或 ListView 控件 以便 当您更改 ComboBox 值时 只有那么多
  • 没有“对 *this”功能的右值引用的解决方法

    我有一个围绕可移动对象的代理容器类 并希望代理能够隐式生成对底层对象的右值引用 但仅当代理本身被移动时 我相信我将能够按照提案 n2439 实施此行为 将移动语义扩展到 this http www open std org jtc1 sc2
  • 在 System.Type 上使用条件断点时出错

    这是函数 public void Init System Type Type this Type Type BuildFieldAttributes BuildDataColumns FieldAttributes 我在第一行设置了一个断点
  • 如何在 C 中将 char 连接到 char* ?

    我怎样才能前置char c to char myChar 我有c值为 A and myChar值为 LL 我怎样才能前置c to myChar使 ALL 这应该有效 include

随机推荐

  • xs:unique如何实现到属性中?

    我想在 XML 文件中传递乘客列表中每个属性的唯一性 我的 xml 文件如下所示
  • 如何在android中维护微调器状态[重复]

    这个问题在这里已经有答案了 我正在做一个 Android 应用程序 它可以从网络服务获取数据并将其加载到微调器中 当我进入某个屏幕并返回时 我需要维护微调器的选定数据状态 例如 如果我从网络服务获取数据1 apple 2 orange 3
  • 无法调用非静态方法[重复]

    这个问题在这里已经有答案了 我正在尝试使用这个wavRead filename 但我收到消息cannot make a static reference to a non static method 我可以简单地将其设为静态并解决我的问题
  • iOS防止tableview的子视图随tableview滚动

    我已在表视图中添加了一个子视图 当用户滚动表视图时 子视图也会随之滚动 我该如何防止这种情况 我知道这可能与不将视图添加到表视图的子视图类似 但我不知道有任何其他方法可以做到这一点 谢谢 如果你想让一个视图成为表视图的子视图 那么你可以通过
  • 无法识别的选择器发送到实例

    XCode 再次 让我发疯 人们如何使用这个 UIViewController look for offer unrecognized selector sent to instance 0x4e34220 2011 04 30 18 38
  • 如何检测 Android 上的辅助功能设置是否启用/禁用

    我特别感兴趣high contrast text color correction and magnification设置 我在网上做了一些研究 找不到我想要的 我看到一个关于检测的答案high contrast text Accessib
  • 在 MATLAB 中计算 FFT 图下的面积

    目前 我对一组数据进行了 FFT 得到了 x 轴上的频率和 y 轴上的幅度的图 我想计算图表下方的面积来给我能量 我不确定如何确定面积 因为我没有方程 而且我只想要图的某个区域而不是图下的整个区域 我有办法做到吗 使用 Matlab 进行数
  • jupyter笔记本中没有python终端

    Attached a screenshot of the error I have tried creating python 3 and python2 virtualEnv but nothing is working Any help
  • QThread 不能很好地工作

    这是 QTread 的子对象 并将其具体化在主线程中 运行时错误如下 QCoreApplication sendEvent 中的 ASSERT 失败 无法将事件发送到 不同线程拥有的对象 当前线程 176f0a8 接收者 类型为 MainW
  • 如何配置 WAMP (localhost) 使用 Gmail 发送电子邮件?

    我想使用本地主机的 mail 函数 我安装了 WAMP 并拥有 Gmail 帐户 我知道Gmail的SMTP是smtp gmail com 端口是465 来自 Gmail 的更多信息 我需要在 WAMP 中配置什么才能使用 mail 函数
  • 三星 Galaxy S5 相机手电筒不工作

    我们有一款适用于所有支持的 Android 手机的应用程序 三星 Galaxy S5 除外 我们的应用程序使用相机近距离拍照 在我们集中注意力拍照的整个过程中 我们需要开启手电筒模式 我们检查支持的参数并设置值 如果支持 参数已设置 但事件
  • 使用 gspread 库检查工作簿是否存在?

    如何使用 gspread 库检查工作簿是否存在 我的问题是 如果我第二次运行 gspread create title 它不会重写前一个文件 而是创建另一个同名的文件 有什么办法可以避免它吗 谢谢 石油 你可以检查它尝试 除外 GC ope
  • IoC 容器中的自绑定是什么?

    我见过像 Ninject 这样的框架以及 Stack 上的帖子谈到使用依赖注入框架时的自绑定 如下面的代码所示 Bind
  • 为什么 IsNaN(x) 与 x == NaN 不同,其中 x = NaN [重复]

    这个问题在这里已经有答案了 为什么这两个不同 var x NaN e g Number e alert isNaN x true good alert x NaN false bad Nothing等于NaN 任何比较都会是false 在严
  • 扩展 django-import-export 的导入表单,为每个导入行指定固定值

    我正在使用 django import export 1 0 1 与 Django 2 1 1 中的管理集成 我有两个型号 from django db import models class Sector models Model cod
  • Git,重新定位错误分支的分支

    git clone blah git checkout b development git checkout b bug581 hack hack git checkout b bug588 hack hack 哦等等 bug 588 应该
  • 缺少 Google Awareness API v9.6

    我对新的地图样式功能感兴趣 该功能在 9 6 Google Play 服务版本中添加 但我也在使用 Awareness API 在我的build gradle I have compile com google android gms pl
  • Reader(StaxEventItemReader) 资源到域对象

    我想将输入资源位置作为字符串传递到域对象的字段 我的配置如下
  • 访问损坏的共享库

    这是代码cpuid2 s cpuid2 s view the cpuid vendor id string using c library calls section data output asciz The processor Vend
  • Apache Thrift 教程中的 C++ 链接器错误 - 未定义的符号

    我正在运行 Apache 的 Thrift 教程 http wiki apache org thrift ThriftUsageC 2B 2B我的 Thrift 版本是 0 9 1 我使用的是 OS X 我在本教程中搜索了类似的问题 虽然其