是否存在Codegear C+的协议缓冲区绑定+;建筑商2007? 从几年前我读到这个帖子后,有人曾经用CODEGONE C++ +Builder 2007 获得协议缓冲区。

是否存在Codegear C+的协议缓冲区绑定+;建筑商2007? 从几年前我读到这个帖子后,有人曾经用CODEGONE C++ +Builder 2007 获得协议缓冲区。,c++,protocol-buffers,c++builder,c++builder-2007,C++,Protocol Buffers,C++builder,C++builder 2007,上述protobuf Builder 2007版本的作者将其上传至第三方URL,但其链接似乎早已失效,根据讨论和Protobuff 2.5.0的当前状态判断,修复/更改从未从protobuf中分叉或合并到主干中 更新: 当使用来自.ExpE.EXE(2.5.0)的代码生成示例文件时,C++ Builder 2007抱怨了大量的问题,包括谷歌中的名字:“重复条目::内部命名空间”(例如,google::internal::kEmptyString——它还抱怨基于std::hash的容器,memse

上述protobuf Builder 2007版本的作者将其上传至第三方URL,但其链接似乎早已失效,根据讨论和Protobuff 2.5.0的当前状态判断,修复/更改从未从protobuf中分叉或合并到主干中

更新:
当使用来自.ExpE.EXE(2.5.0)的代码生成示例文件时,C++ Builder 2007抱怨了大量的问题,包括谷歌中的名字:“重复条目::内部命名空间”(例如,
google::internal::kEmptyString
——它还抱怨基于
std::hash
的容器,
memset
是一个无法识别的符号。

我花了几天时间才找到一个解决方案,但我是如何在Codegear 2007中实现它的:

  • 获取C++ Builder版本的ToBuff---这是基于2.4.1,所以它有点过时了,但是我想可以将C++ Builder更改合并到2.5.0(或者不管最新版本是什么)C++的Builder版本的BuildFF是为Builder 2009编写的,但是它修复了各种问题:<>代码> STD::Hash < /C> >,所以它比谷歌的发布更好。

  • /src/google/protobuf
    文件夹中复制以下
    .cc
    文件,并将其更改为
    .cpp
    扩展名。似乎
    .cbproj
    格式有问题,它不喜欢
    .cc
    (您需要将所有这些文件添加到Codegear 2007.cbproj中-这些是libprotobuf-lite所需的文件)

  • 根据“Dazza”的线程,在文件中使用查找和替换(例如记事本++)重命名google::internal命名空间。请注意,需要区分大小写的查找/替换,因为有时会将名称“internal”用于其他用途。对于此步骤,我遵循了Dazza的建议,将其更改为
    google::internal
    。(注意——这既适用于libprotobuf-lite,也适用于用于生成代码的字符串)

  • < P>在生成的代码串中,搜索所有出现的<代码> MyStuts<代码>,并将其更改为<代码> STD::MeStase(这主要是代码生成器LIB;LbPotoC++ < /C>)。如果不这样做,每次重新生成原始绑定时,C++Builder将无法识别<代码> MyStuts<代码> >

  • 使用Visual Studio生成protoc.exe(我无法在Builder中生成protoc.exe,但这并不重要,代码生成器只需生成一次)

  • 修改example.proto文件使用lite运行时;
    选项Optimize\u for=LITE\u RUNTIME
    。注意-打开此选项时,反射功能不可用

  • 使用
    --cpp_out
    在.proto文件上运行
    protoc.exe
    。输出文件将具有
    .cc
    扩展名-您需要将其重命名为
    .cpp

  • 将生成的文件添加到项目和生成中


  • (注意-仍有一些警告未得到解决-一个是抱怨函数地址有多余的
    &
    ,另一些是抱怨有符号/无符号比较-但至少它构建并似乎起作用了)

    实际问题是什么你有吗?你提供了这么长的描述,但没有真正的细节。@RemyLebeau我终于解决了这个问题,很抱歉原始帖子中没有细节。更新了OP并添加了我的解决方案作为答案,以防将来对其他人有用。
    extension_set.cpp
    generated_message_util.cpp
    message_lite.cpp
    repeated_field.cpp
    wire_format_lite.cpp
    stubs\common.cpp
    stubs\once.cpp
    io\coded_stream.cpp
    io\zero_copy_stream.cpp
    io\zero_copy_stream_impl_lite.cpp