Hi Kenton,
I have the following message in my .proto file:
//************************************************/
package traceFileMessagesProto;
message RecordHeader {
message myqueue{
optional uint32 id = 1;
optional uint32 Priority = 2;
}
message action{
optional eactiontype eactiontype_instance = 1;
optional ereason ereason_instance = 2;
optional myqueue myqueue_instance = 3;
}
optional action action_instance =1;
} //end RecordHeader
/***************************************************/
Thus, "action" is nested message in "RecordHeader" and has "queue"
submessage in it.
I used the protoc compiler -o <desc-file> option to generate the descriptor
set file and loaded it through istream in c++ application, followed by
streaming FileDescriptorSet object with this descriptor set file:
//***************************************************************//
ifstream desc_file("mydescriptor.dsc",ios::in);
FileDescriptorSet f;
f.ParseFromIstream(&desc_file);
//***************************************************************//
However, while parsing through DescriptorPool::BuildFile(f.file(0));
at the line corresponding to the message file line:
=> optional action action_instance =1;
the BuildFile() function exits by giving error:
undefined_symbol "action"
The code returns through the following function in protoc library:
//***************************************************************//
void DescriptorBuilder::AddNotDefinedError(
const string& element_name,
const Message& descriptor,
DescriptorPool::ErrorCollector::ErrorLocation location,
const string& undefined_symbol) {
if (possible_undeclared_dependency_ == NULL) {
AddError(element_name, descriptor, location,
"\"" + undefined_symbol + "\" is not defined.");
//***************************************************************//
The only possible explanation could be that the message "action" is not
parsed before its instance declaration from my .proto/descriptor_set file.
Probably all nested messages should be parsed on their instance declarations
in a recursive manner in the DescriptorPool::Buildfile() function.
Qustion1:
How do I solve the above issue?
Question 2:
Can not I simply load my messages in DescriptorPool through the .proto file
instead of calling the service of protoc compiler to generate a descriptor
file? I have to generate .proto file at runtime and I don't want to call
another exe (protoc.exe) from my application for dependency reasons.
Thanks in advance for any solutions /directions.
Regards,
Himanshu
--
You received this message because you are subscribed to the Google Groups
"Protocol Buffers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/protobuf?hl=en.