gpt4 book ai didi

c++ - 如何在 OS X 上编译由谷歌的 protobuf 编译器生成的 C++ 文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:03:33 26 4
gpt4 key购买 nike

我正在使用 Mac。我有一个用 C++ 编写的库,我们称它为“wibble”,以及它的源代码。我可以使用来自 macports (g++-mp-4.3) 的 GCC 4.3 编译这个源代码,并且只要我使用 GCC 4.3,就可以将生成的库链接到其他东西。

但是,我需要将它链接到另一个应用程序(让我们称之为“blort”),它只会加载使用与 OS X 10.6 捆绑在一起的 GCC 4.2 编译的库(因为这就是 it构建于)

我可以或多或少地弄乱 wibble 的 Makefile 但是我可能会喜欢,但是 blort 是一个固定的目标。我可以编写任何代码或构建脚本,将它们粘合在一起,我可能需要。似乎没有办法让 wibble 在 4.2 上编译(除非重写,这是不可能的),编写它的人证实了这一点。

我对 C++ 中的整个构建和链接过程不是很熟悉,只接触过这个集成,完全被难住了。我想要实现的目标有可能实现吗?如果是,怎么办?

以防万一,我要做的是通过 Inline::CPP 从 Perl 中调用 wibble 中的方法。 ,但如果必须的话,我愿意编写原始 XS(至少我以前做过那个)。我需要使用系统 perl,这样就可以很容易地在其他人的机器上构建和安装。 :-/

更新,2012-03-01,1

我正在研究使用 Mac 的编译器编译 protobufs,看看我是否可以让 wibble 与使用该 protobufs 构建的相同编译器进行编译。我会尽快发布结果。

同样的错误:

g++ -Wall -Wno-unused-function -Wno-long-long -pedantic -O3 -I/Users/sscaffid/local/include -L/Users/sscaffid/local/lib -fPIC -std=c++98 -c wire.pb.cc
In file included from /Users/sscaffid/local/include/google/protobuf/wire_format_lite_inl.h:43,
from wire.pb.cc:10:
/Users/sscaffid/local/include/google/protobuf/wire_format_lite.h:94: error: comma at end of enumerator list
/Users/sscaffid/local/include/google/protobuf/wire_format_lite.h:117: error: comma at end of enumerator list
/Users/sscaffid/local/include/google/protobuf/wire_format_lite.h:132: error: comma at end of enumerator list
In file included from wire.pb.cc:10:
/Users/sscaffid/local/include/google/protobuf/wire_format_lite_inl.h:303: error: extra ‘;’
/Users/sscaffid/local/include/google/protobuf/wire_format_lite_inl.h:304: error: extra ‘;’
/Users/sscaffid/local/include/google/protobuf/wire_format_lite_inl.h:305: error: extra ‘;’
/Users/sscaffid/local/include/google/protobuf/wire_format_lite_inl.h:306: error: extra ‘;’
/Users/sscaffid/local/include/google/protobuf/wire_format_lite_inl.h:307: error: extra ‘;’
/Users/sscaffid/local/include/google/protobuf/wire_format_lite_inl.h:308: error: extra ‘;’
In file included from wire.pb.cc:11:
/Users/sscaffid/local/include/google/protobuf/descriptor.h:322: error: comma at end of enumerator list
/Users/sscaffid/local/include/google/protobuf/descriptor.h:341: error: comma at end of enumerator list
/Users/sscaffid/local/include/google/protobuf/descriptor.h:352: error: comma at end of enumerator list
/Users/sscaffid/local/include/google/protobuf/descriptor.h:1206: error: extra ‘;’
/Users/sscaffid/local/include/google/protobuf/descriptor.h:1223: error: extra ‘;’
/Users/sscaffid/local/include/google/protobuf/descriptor.h:1243: error: extra ‘;’
/Users/sscaffid/local/include/google/protobuf/descriptor.h:1249: error: extra ‘;’
/Users/sscaffid/local/include/google/protobuf/descriptor.h:1257: error: extra ‘;’
/Users/sscaffid/local/include/google/protobuf/descriptor.h:1264: error: extra ‘;’
/Users/sscaffid/local/include/google/protobuf/descriptor.h:1274: error: extra ‘;’
In file included from wire.pb.cc:13:
/Users/sscaffid/local/include/google/protobuf/wire_format.h:226: error: comma at end of enumerator list
make: *** [wire.pb.o] Error 1

最佳答案

来自问题:

解决方案:

对 GCC 4.2 使用 -pedantic 选项使其对 protobuf 代码非常生气。不要使用它。

关于c++ - 如何在 OS X 上编译由谷歌的 protobuf 编译器生成的 C++ 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9525971/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com