当前位置: 首页 > 知识库问答 >
问题:

CLinuxGoogle协议缓冲区-无法运行教程中编译的原始cpp文件

王昊
2023-03-14

我正在遵循有关google协议缓冲区的cpp教程

我在Ubuntu上安装了Google协议缓冲区,并编译了。原始文件,所以我得到了pb。h和pb。抄送生成的文件。

我制作了ReadAddressBook。cpp非常低。它只是创建proto对象并验证版本是否匹配。

#include <iostream>
#include <fstream>
#include <string>
#include "address_book.pb.h"
using namespace std;

int main(){

 GOOGLE_PROTOBUF_VERIFY_VERSION;

 tutorial::AddressBook address_book;

return 0;
}

我用

g++ -c ReadAddressBook.cpp

(同样使用g-c ReadAddressBook.cpp-lProprobuf-lpthread_但它给出了相同的结果)

但是,在运行时:

g++ -o ReadAddressBook ReadAddressBook.o

它给了我谷歌protobuf src的参考,但没有。为什么会这样?

共有1个答案

西门嘉澍
2023-03-14

您需要将lprotobuf添加到链接阶段,但看起来您试图在编译阶段使用它。也就是说,您要执行以下操作:

g++ -c ReadAddressBook.cpp
g++ -o ReadAddressBook ReadAddressBook.o -lprotobuf -lpthread
 类似资料:
  • 问题内容: 我grep其他主题,但他们没有帮助我=(。在我的工作服务器上,我没有sudo特权,因此我使用 ./configure –prefix = / home /用户名/本地 然后,我用“ person”示例创建源文件,并使用protoc成功地对其进行编译。 我没有pkg-info =(。我尝试用 g ++ -I / home /用户名/本地/ include -L / home /用户名/本

  • 我搜索其他主题,但它们对我没有帮助=(。在我的工作服务器上,我没有sudo特权,所以我安装PB时使用 ./配置--prefix=/home/用户名/本地 然后我用“人”例子创建源文件,并用协议成功编译。 我没有pkg信息=(。我尝试用 g-I/home/username/local/include-L/home/username/local/lib-lprotobuf-lpthread main。

  • 我正在学习关于协议缓冲区的google python教程,在编译器出现之前,我已经能够成功地完成所有工作。 https://developers.google.com/protocol-buffers/docs/pythontutorial 本教程内容如下: 现在运行编译器,指定源目录(应用程序的源代码所在的目录–如果不提供值,则使用当前目录)、目标目录(希望生成的代码所在的目录;通常与$SRC\

  • 试图使用Ionic 4中的协议缓冲区进行编码 我已经下载了协议并用它来生成一堆_pb.js文件,每个. proto文件一个。很好。 首先关注原型示例。这是示例代码: 我做了一些更改以匹配我的文件。更改proto文件的名称。但是我的proto文件中没有包名称。所以我只是使用了消息名称。首先这是我的. proto文件的开头: 下面是我修改后的代码: 这似乎不起作用。我的控制台显示: 我相信我已经成功地

  • 我按照协议缓冲区的教程,我在编译时不断遇到不同的错误。我的addressbook.proto文件在中

  • 我是协议缓冲区的新手,我想知道是否可以搜索协议缓冲区二进制文件并以结构化格式读取数据。例如,如果我的.proto文件中的一条消息有4个字段,我希望序列化该消息,并将多条消息写入一个文件,然后在该文件中搜索特定的字段。如果我找到该字段,我希望以与写入时相同的结构化格式读回消息。对于协议缓冲区,这是可能的吗?如果可能,任何示例代码或示例都将非常有用。谢谢