У меня есть Windows нативный проект C ++, который использует google protobufs (синтаксис версии 3) и gRP C. У меня есть .proto файл, который включает тип Timestamp, как это:
import "timestamp.proto";
Я могу успешно сгенерировать (используя proto c .exe). cc и .h файлы сообщений и служб в моем файле .proto без каких-либо ошибок или предупреждений. Я также могу сгенерировать вывод для gRP C из файла .proto без ошибок и предупреждений.
Когда я использую эти сгенерированные файлы в проекте Visual Studio, я вижу эти ошибки в файле. cc генерируется из моего .proto файла. Все они связаны с типом Timestamp:
Error C2491 'scc_info_Timestamp_google_2fprotobuf_2ftimestamp_2eproto': definition of dllimport data not allowed
Error C2491 'TableStruct_google_2fprotobuf_2ftimestamp_2eproto::offsets': definition of dllimport static data member not allowed
Error C2653 'PROTOBUF_INTERNAL_EXPORT_timestamp_2eproto': is not a class or namespace name
Error C2059 syntax error: '<'
Error C2065 'scc_info_Timestamp_timestamp_2eproto': undeclared identifier
Error C2065 'scc_info_Timestamp_timestamp_2eproto': undeclared identifier
Error C2039 'descriptor_table_timestamp_2eproto': is not a member of ''global namespace''
Error C2065 'descriptor_table_timestamp_2eproto': undeclared identifier
Я добавил файлы Timestamp.pb.h /.cc в заголовочные файлы проекта Visual Studio, а также другие .h / .cc файлы, сгенерированные из моего .proto файла.
Я понятия не имею, как go решить эту проблему. Я убедился, что удаление типа Timestamp позволяет успешно построить проект. Я попробовал старую версию protobufs. И, конечно, гуглил часами ...
Мое окружение:
Windows 10
Visual Studio 2017
vcpkg (Microsoft C++ package manager) used to build Protocol buffers 3.11.3 and gRPC 1.27.1
Есть предложения?