소스 검색

Don't use dll-export declspec on class-nested extensions.

kenton@google.com 16 년 전
부모
커밋
30be0a8758
1개의 변경된 파일9개의 추가작업 그리고 6개의 파일을 삭제
  1. 9 6
      src/google/protobuf/compiler/cpp/cpp_extension.cc

+ 9 - 6
src/google/protobuf/compiler/cpp/cpp_extension.cc

@@ -89,12 +89,15 @@ void ExtensionGenerator::GenerateDeclaration(io::Printer* printer) {
   vars["constant_name"] = FieldConstantName(descriptor_);
 
   // If this is a class member, it needs to be declared "static".  Otherwise,
-  // it needs to be "extern".
-  vars["qualifier"] =
-    (descriptor_->extension_scope() == NULL) ? "extern" : "static";
-
-  if (!dllexport_decl_.empty()) {
-    vars["qualifier"] = dllexport_decl_ + " " + vars["qualifier"];
+  // it needs to be "extern".  In the latter case, it also needs the DLL
+  // export/import specifier.
+  if (descriptor_->extension_scope() == NULL) {
+    vars["qualifier"] = "extern";
+    if (!dllexport_decl_.empty()) {
+      vars["qualifier"] = dllexport_decl_ + " " + vars["qualifier"];
+    }
+  } else {
+    vars["qualifier"] = "static";
   }
 
   printer->Print(vars,