如何编译Google Protobuf命令行界面编译
How to compile Google Protobuf command line interface compile
我正在尝试对 protobuf 二进制文件进行原始解码。我从源代码 https://github.com/google/protobuf 安装了 google protobuf 库
我能够使用命令行使用命令 protoc --decode_raw <encodedfile>
解码原始的 protobuf 二进制文件。我希望能够使用 c++ 库以编程方式执行此操作。类似于文档中的以下示例。
但是尝试编译一段简单的代码是行不通的。
#include <iostream>
#include <fstream>
#include <string>
#include <google/protobuf/compiler/command_line_interface.h>
using namespace google::protobuf::compiler;
using namespace std;
int main(int argc, char* argv[]) {
google::protobuf::compiler::CommandLineInterface cli_;
cerr << "Compiled And Run" << endl;
}
编译命令
c++ my_program.cc -o my_program -pthread -I/usr/local/include -pthread -L/usr/local/lib -lprotobuf -lpthread
我看到以下错误
my_program.cc:(.text+0x24): undefined reference to `google::protobuf::compiler::CommandLineInterface::CommandLineInterface()'
my_program.cc:(.text+0x4f): undefined reference to `google::protobuf::compiler::CommandLineInterface::~CommandLineInterface()'
my_program.cc:(.text+0x70): undefined reference to `google::protobuf::compiler::CommandLineInterface::~CommandLineInterface()'
感谢对此的任何帮助。
Protobuf 编译器在不同的库中,libprotoc
。你需要link反对它
c++ my_program.cc -o my_program -pthread -I/usr/local/include -pthread -L/usr/local/lib -lprotoc -lprotobuf -lpthread
注意-lprotoc
需要出现在-lprotobuf
之前,因为libprotoc使用了libprotobuf的函数
我正在尝试对 protobuf 二进制文件进行原始解码。我从源代码 https://github.com/google/protobuf 安装了 google protobuf 库
我能够使用命令行使用命令 protoc --decode_raw <encodedfile>
解码原始的 protobuf 二进制文件。我希望能够使用 c++ 库以编程方式执行此操作。类似于文档中的以下示例。
但是尝试编译一段简单的代码是行不通的。
#include <iostream>
#include <fstream>
#include <string>
#include <google/protobuf/compiler/command_line_interface.h>
using namespace google::protobuf::compiler;
using namespace std;
int main(int argc, char* argv[]) {
google::protobuf::compiler::CommandLineInterface cli_;
cerr << "Compiled And Run" << endl;
}
编译命令
c++ my_program.cc -o my_program -pthread -I/usr/local/include -pthread -L/usr/local/lib -lprotobuf -lpthread
我看到以下错误
my_program.cc:(.text+0x24): undefined reference to `google::protobuf::compiler::CommandLineInterface::CommandLineInterface()'
my_program.cc:(.text+0x4f): undefined reference to `google::protobuf::compiler::CommandLineInterface::~CommandLineInterface()'
my_program.cc:(.text+0x70): undefined reference to `google::protobuf::compiler::CommandLineInterface::~CommandLineInterface()'
感谢对此的任何帮助。
Protobuf 编译器在不同的库中,libprotoc
。你需要link反对它
c++ my_program.cc -o my_program -pthread -I/usr/local/include -pthread -L/usr/local/lib -lprotoc -lprotobuf -lpthread
注意-lprotoc
需要出现在-lprotobuf
之前,因为libprotoc使用了libprotobuf的函数