实践1
test.proto文件
1 | syntax = "proto3"; //声明了protobuf的版本 |
protobuf可以先声明好消息的结构
1 | protoc test.proto --cpp_out=./#使用这条命令可以在当前目录自动生成使用这些消息的cpp文件test.pb.h,test.pb.cc |
main.cc测试文件
1 |
|
1 | g++ main.cc test.pb.cc $(pkg-config --cflags --libs protobuf) -o test |
1 |
|
首先我的protobuf版本是32.1,是强制依赖absl 库,所以使用 pkg-config,这个需要
1 | sudo apt update |
1 | -L/usr/local/lib -lprotobuf -labsl_log_internal_check_op -labsl_die_if_null -labsl_log_internal_conditions -labsl_log_internal_message -labsl_examine_stack -labsl_log_internal_format -labsl_log_internal_nullguard -labsl_log_internal_structured_proto -labsl_log_internal_log_sink_set -labsl_log_sink -labsl_log_entry -labsl_log_internal_proto -labsl_flags_internal -labsl_flags_marshalling -labsl_flags_reflection -labsl_flags_private_handle_accessor -labsl_flags_commandlineflag -labsl_flags_commandlineflag_internal -labsl_flags_config -labsl_flags_program_name -labsl_log_initialize -labsl_log_internal_globals -labsl_log_globals -labsl_vlog_config_internal -labsl_log_internal_fnmatch -labsl_raw_hash_set -labsl_hashtablez_sampler -labsl_random_distributions -labsl_random_seed_sequences -labsl_random_internal_entropy_pool -labsl_random_internal_randen -labsl_random_internal_randen_hwaes -labsl_random_internal_randen_hwaes_impl -labsl_random_internal_randen_slow -labsl_random_internal_platform -labsl_random_internal_seed_material -labsl_random_seed_gen_exception -labsl_statusor -labsl_status -labsl_cord -labsl_cordz_info -labsl_cord_internal -labsl_hash -labsl_city -labsl_cordz_functions -labsl_exponential_biased -labsl_cordz_handle -labsl_crc_cord_state -labsl_crc32c -labsl_crc_internal -labsl_crc_cpu_detect -labsl_leak_check -labsl_strerror -labsl_str_format_internal -labsl_synchronization -labsl_graphcycles_internal -labsl_kernel_timeout_internal -labsl_stacktrace -labsl_symbolize -labsl_debugging_internal -labsl_demangle_internal -labsl_demangle_rust -labsl_decode_rust_punycode -labsl_utf8_for_code_point -labsl_malloc_internal -labsl_tracing_internal -labsl_time -labsl_civil_time -labsl_time_zone -lutf8_validity -lutf8_range -labsl_strings -labsl_strings_internal -labsl_string_view -labsl_int128 -labsl_base -lrt -labsl_spinlock_wait -labsl_throw_delegate -labsl_raw_logging_internal -labsl_log_severity |
这样就是成功的。
实践2
test.proto文件
1 | syntax = "proto3"; //声明了protobuf的版本 |
这里看到我把string更换为bytes,string存储的是文本,byte存储的是任意二进制数据,但是在C++会自动映射为std::string类型,性能差不多,两者都可以。
前面把.proto文件转换为c++文件就不赘述了。
1 |
|
1 | 2 |
实践3
test.proto
1 | //定义下面的选项,表示生成service服务类和rpc方法描述,不加默认不生成 |

