EDIT (30.04.19): Это не привело к полному устранению проблемы, так как я не могу полностью скомпилировать свой код, но это исправило ошибки включения, так что, возможно, я немного правильный путь. Любая помощь по-прежнему ценится! Теперь я получаю ссылки на ошибки с ошибками "function_from_protobuf_name is undefined ...". Вероятно, сейчас получаются сотни строк этих ошибок.
Похоже, я получил его сейчас. В моем каталоге project / main я добавил следующую строку в мой файл component.mk:
CXXFLAGS += -lpthread -DGOOGLE_PROTOBUF_NO_RTTI -I/usr/local/include
Я установил Protobuf (используя настройки и инструкции по умолчанию здесь ) в /usr/local.
- Protobufs требует библиотеку pthread, следовательно, флаг -lpthread.
- Произошел сбой Make с ошибкой «невозможно использовать typeid с -fno-rtti», которая была исправлена добавлением -DGOOGLE_PROTOBUF_NO_RTTI
-I/usr/local/include
добавляет usr / local / include (где был установлен Protobuf) в список путей, которые ищет компилятор
Мой проект структурирован следующим образом:
-project
-main
-pb
myfile.proto
myfile.pb.cc
myfile.pb.h
myfile_c_interface.h
myfile_c_interface.cpp
-main.c
-component.mk (this is the one I added the above line to)
-Makefile
-partitions.csv
...
Я скомпилировал myfile.proto как обычно с protoc, используя команды:
cd main/pb
protoc --cpp_out=. myfile.proto
для создания myfile.pb.cc и myfile.pb.h
Для взаимодействия с моим main.c я написал myfile_c_interface.h и myfile_c_interface.cpp, который использует сообщения Protobuf из myfile.proto по мере необходимости, используя их классы c, но предоставляет функциональность для main через c-feature-only c ++ ( просто публичные функции, которые взаимодействуют с классами внутри). Может быть, не самый простой способ, но он работает!