瀏覽代碼

Tell the QPluginLoader to globally export all external symbols.

Without this flag, older gcc versions do not make all external
symbols and RTTI information available to other shared libraries.
This may result in dynamic_cast calls returning 0, when casting
between objects from different libraries.
Sascha Zelzer 14 年之前
父節點
當前提交
ac865fe516
共有 1 個文件被更改,包括 4 次插入0 次删除
  1. 4 0
      Libs/PluginFramework/ctkPluginPrivate.cpp

+ 4 - 0
Libs/PluginFramework/ctkPluginPrivate.cpp

@@ -48,6 +48,10 @@ ctkPluginPrivate::ctkPluginPrivate(
   //TODO
   //checkCertificates(pa);
 
+  // Older gcc versions need to be told to make external symbols and RTTI information
+  // available to other libraries when loading a library with dlopen
+  pluginLoader.setLoadHints(QLibrary::ExportExternalSymbolsHint);
+
   checkManifestHeaders();
 
   pluginDir = fwCtx->getDataStorage(id);