Я установил protoc, protoc-c, libprotobuf и libprotobuf-c в моей системе.У меня есть .proto файл, который импортирует timestamp.proto следующим образом:
syntax = "proto3";
import "google/protobuf/timestamp.proto";
message DeviceCtx {
google.protobuf.Timestamp CID = 1;
uint32 ContextLen = 2;
bytes ContextBuf = 3;
}
Я использую protoc-c для генерации привязки C для того же, используя ниже:
home>protoc-c --c_out=. a.proto
home>ls a.pb-c*
a.pb-c.c a.pb-c.h
Он генерируетC привязки для этого прото файла.Но когда я пытаюсь скомпилировать этот файл .c, я получаю следующую ошибку, так как он ищет файл timestamp.pb-ch.
home>gcc a.pb-c.c dummy.c -I/usr/local/include -L/usr/local/lib -lprotobuf-c
In file included from a.pb-c.c:9:0:
a.pb-c.h:17:10: fatal error: google/protobuf/timestamp.pb-c.h: No such file or directory
#include "google/protobuf/timestamp.pb-c.h"
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
В protoc-c я не вижу заголовочные файлы для стандартныхProto, как timestamp.proto генерируется / ставится, когда я устанавливал protoc-c.Означает ли это, что мы должны явно перекомпилировать все protos в google / protobuf, используя protoc-c, чтобы сгенерировать привязку C для всех protos (google / protobuf / *. Protos), поместить сгенерированные заголовочные файлы в / usr / local / include/ google / protobuf и включите файлы * pb-cc в нашу библиотеку для его успешного построения?Нужно ли устанавливать какой-либо конкретный пакет, чтобы получить привязки C для протосов в google / protobuf.Пропустил ли я какой-то шаг во время установки, который сделал бы автогенерацию привязок C для всех прототипов в google / protobuf и правильно поставил ее.
Я не вижу проблем, если не импортирую прототипыот google / protobuf. * 1012 *
При использовании protoc для того же файла proto, я не вижу такой проблемы.
home>protoc --cpp_out=. a.proto
home>g++ a.pb.cc dummy.cc -I/usr/local/include -L/usr/local/lib -lprotobuf
home>
Я новичок в protobuf и использую компилятор protoc-c дляпервый раз.Прошу прощения за мои недостатки.
Спасибо, -Мини