diff --git a/src/google/protobuf/compiler/cpp/cpp_file.cc b/src/google/protobuf/compiler/cpp/cpp_file.cc index bc664c7069..d8fda59c3b 100644 --- a/src/google/protobuf/compiler/cpp/cpp_file.cc +++ b/src/google/protobuf/compiler/cpp/cpp_file.cc @@ -403,7 +403,7 @@ class FileGenerator::ForwardDeclarations { std::map& classes() { return classes_; } std::map& enums() { return enums_; } - void Print(io::Printer* printer) const { + void Print(io::Printer* printer, const Options& options) const { for (std::map::const_iterator it = enums_.begin(), end = enums_.end(); @@ -422,8 +422,11 @@ class FileGenerator::ForwardDeclarations { printer->Print( "class $classname$DefaultTypeInternal;\n" + "$dllexport_decl$" "extern $classname$DefaultTypeInternal " "_$classname$_default_instance_;\n", // NOLINT + "dllexport_decl", + options.dllexport_decl.empty() ? "" : options.dllexport_decl + " ", "classname", it->first); } @@ -433,7 +436,7 @@ class FileGenerator::ForwardDeclarations { it != end; ++it) { printer->Print("namespace $nsname$ {\n", "nsname", it->first); - it->second->Print(printer); + it->second->Print(printer, options); printer->Print("} // namespace $nsname$\n", "nsname", it->first); } @@ -808,7 +811,7 @@ void FileGenerator::GenerateForwardDeclarations(io::Printer* printer) { dependency.FillForwardDeclarations(&decls); } FillForwardDeclarations(&decls); - decls.Print(printer); + decls.Print(printer, options_); } void FileGenerator::FillForwardDeclarations(ForwardDeclarations* decls) {