瀏覽代碼

* also export the mangled RTTI name from a package

git-svn-id: trunk@34178 -
svenbarth 9 年之前
父節點
當前提交
6cc7539208
共有 1 個文件被更改,包括 15 次插入5 次删除
  1. 15 5
      compiler/pkgutil.pas

+ 15 - 5
compiler/pkgutil.pas

@@ -139,12 +139,22 @@ implementation
       if df_generic in def.defoptions then
         exit;
       def.symtable.SymList.ForEachCall(@exportabstractrecordsymproc,def.symtable);
-      if (def.typ=objectdef) and (oo_has_vmt in tobjectdef(def).objectoptions) then
+      if def.typ=objectdef then
         begin
-          hp:=texported_item.create;
-          hp.name:=stringdup(tobjectdef(def).vmt_mangledname);
-          hp.options:=hp.options+[eo_name];
-          exportlib.exportvar(hp);
+          if (oo_has_vmt in tobjectdef(def).objectoptions) then
+            begin
+              hp:=texported_item.create;
+              hp.name:=stringdup(tobjectdef(def).vmt_mangledname);
+              hp.options:=hp.options+[eo_name];
+              exportlib.exportvar(hp);
+            end;
+          if is_class(def) then
+            begin
+              hp:=texported_item.create;
+              hp.name:=stringdup(tobjectdef(def).rtti_mangledname(fullrtti));
+              hp.options:=hp.options+[eo_name];
+              exportlib.exportvar(hp);
+            end;
         end;
     end;