当前位置: 首页 > 面试题库 >

无法从Google协议缓冲区编译示例

公西飞鸾
2023-03-14
问题内容

我grep其他主题,但他们没有帮助我=(。在我的工作服务器上,我没有sudo特权,因此我使用

./configure –prefix = / home /用户名/本地

然后,我用“ person”示例创建源文件,并使用protoc成功地对其进行编译。

我没有pkg-info =(。我尝试用

g ++ -I / home /用户名/本地/ include -L / home /用户名/本地/ lib -lprotobuf -lpthread
main.cpp person.pb.cc

然后有十亿个模拟错误,即

person.pb.cc:(.text+0x4cf):对`google :: protobuf :: internal ::
kEmptyString’的未定义引用

我认为链接存在问题,但是如何解决呢?

回声$ LD_LIBRARY_PATH / home /用户名/本地/ lib

在main.cpp中:

#include "person.pb.h"
...

谢谢。


问题答案:

将库放在最后:

g ++ -I / home /用户名/本地/ include -L / home /用户名/本地/ lib main.cpp person.pb.cc
-lprotobuf -pthread

从GCC链接选项:

-图书馆
-l库
    链接时搜索名为library的库。 
    (第二种选择将库作为单独的参数
    仅用于POSIX合规性,不建议使用。)

    在命令中写入此选项的位置会有所不同。
    链接器在以下位置搜索和处理库和目标文件:
    指定顺序。
    因此,`foo.o -lz bar.o'在文件foo.o之后搜索库'z',但是
    在bar.o之前 如果bar.o引用`z'中的函数,则这些函数
    可能未加载。

另外,使用-pthreadpre-a和-lpthreadas -pthread可能为预处理器和链接器设置标志。



 类似资料:
  • 我搜索其他主题,但它们对我没有帮助=(。在我的工作服务器上,我没有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\

  • 问题内容: 我正在使用gSoap将旧式C 系统重构为SOA。我们遇到了一些性能问题(非常大的XML),因此我的领导要我看一下协议缓冲区。我做到了,它看起来非常酷(我们需要C 和Java支持)。但是协议缓冲区是仅用于序列化的解决方案,现在我需要将其发送到Java前端。从C ++和Java角度来看,我应该使用什么来通过HTTP(只是内部网络)发送那些序列化的内容? PS。另一个人试图加速我们的gSoa

  • 请注意:虽然这个问题特别提到了Dropwizard,但我相信任何有泽西/JAX-RS经验的人都应该能够回答这个问题,因为我可以想象Dropwizard只是在幕后遵循泽西/JAX-RS约定。 我有一个Dropwizard服务,它用JSON编写,工作非常出色。 现在我想将其切换为读/写二进制数据(以最小化网络带宽)。我看到了Dropwizard Protobuf库,但我对在Dropwizard中实现二

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

  • 我正在使用Google Protocol Buffers向服务器发送消息。我对如何发送图像与如何接收图像感到困惑。有关详细信息,请参阅下面的代码,但我的问题是: 我需要base64_decode从未经过base64编码的返回字符串吗,因为它是使用char*和size发送的?也许Google Protocol Buffers处理了这个问题,但我在生成的类中找不到任何证据。 我可能在这里找到了答案,但