diff --git a/src/libs/qmljs/qmljslink.cpp b/src/libs/qmljs/qmljslink.cpp
index b463309542129f62161729c3f1c0d31084794aa5..c5a2ca3452218ade52ac23c881d7a3a240a18a05 100644
--- a/src/libs/qmljs/qmljslink.cpp
+++ b/src/libs/qmljs/qmljslink.cpp
@@ -291,7 +291,8 @@ ObjectValue *Link::importNonFile(Document::Ptr doc, const ImportInfo &importInfo
             if (libraryInfo.dumpStatus() == LibraryInfo::DumpNotStartedOrRunning) {
                 ModelManagerInterface *modelManager = ModelManagerInterface::instance();
                 if (modelManager)
-                    modelManager->loadPluginTypes(libraryPath, importPath, packageName);
+                    modelManager->loadPluginTypes(libraryPath, importPath,
+                                                  packageName, version.toString());
                 warning(doc, locationFromRange(importInfo.ast()->firstSourceLocation(),
                                                importInfo.ast()->lastSourceLocation()),
                         tr("Library contains C++ plugins, type dump is in progress."));
diff --git a/src/libs/qmljs/qmljsmodelmanagerinterface.h b/src/libs/qmljs/qmljsmodelmanagerinterface.h
index 15840d69ee771521c170d6519b6cc07e526e3149..1fa30b4196a8d02caf100c41f476d261152ce73b 100644
--- a/src/libs/qmljs/qmljsmodelmanagerinterface.h
+++ b/src/libs/qmljs/qmljsmodelmanagerinterface.h
@@ -131,7 +131,8 @@ public:
 
     virtual QStringList importPaths() const = 0;
 
-    virtual void loadPluginTypes(const QString &libraryPath, const QString &importPath, const QString &importUri) = 0;
+    virtual void loadPluginTypes(const QString &libraryPath, const QString &importPath,
+                                 const QString &importUri, const QString &importVersion) = 0;
 
     virtual CppQmlTypeHash cppQmlTypes() const = 0;
 
diff --git a/src/plugins/qmljstools/qmljsmodelmanager.cpp b/src/plugins/qmljstools/qmljsmodelmanager.cpp
index 41a462c0c5c1467ba730f5668ddc47591aad1859..754f606b0249f2e66a174c6d9b9ed93f0ca1d181 100644
--- a/src/plugins/qmljstools/qmljsmodelmanager.cpp
+++ b/src/plugins/qmljstools/qmljsmodelmanager.cpp
@@ -571,9 +571,10 @@ void ModelManager::updateImportPaths()
     updateSourceFiles(importedFiles, true);
 }
 
-void ModelManager::loadPluginTypes(const QString &libraryPath, const QString &importPath, const QString &importUri)
+void ModelManager::loadPluginTypes(const QString &libraryPath, const QString &importPath,
+                                   const QString &importUri, const QString &importVersion)
 {
-    m_pluginDumper->loadPluginTypes(libraryPath, importPath, importUri);
+    m_pluginDumper->loadPluginTypes(libraryPath, importPath, importUri, importVersion);
 }
 
 void ModelManager::queueCppQmlTypeUpdate(const CPlusPlus::Document::Ptr &doc)
diff --git a/src/plugins/qmljstools/qmljsmodelmanager.h b/src/plugins/qmljstools/qmljsmodelmanager.h
index b669767693f53ef4614797e21b094bf6bf0f53b6..9adbb1ad03a9d922b79b2042eec1fa226c129ecd 100644
--- a/src/plugins/qmljstools/qmljsmodelmanager.h
+++ b/src/plugins/qmljstools/qmljsmodelmanager.h
@@ -83,7 +83,8 @@ public:
 
     virtual QStringList importPaths() const;
 
-    virtual void loadPluginTypes(const QString &libraryPath, const QString &importPath, const QString &importUri);
+    virtual void loadPluginTypes(const QString &libraryPath, const QString &importPath,
+                                 const QString &importUri, const QString &importVersion);
 
     virtual CppQmlTypeHash cppQmlTypes() const;
 
diff --git a/src/plugins/qmljstools/qmljsplugindumper.cpp b/src/plugins/qmljstools/qmljsplugindumper.cpp
index 28db6304f32ba5e0b36f18f39b62bc2b26e40825..7ab0d9bcb23c9fd72f3a93d6e89f0224172f328d 100644
--- a/src/plugins/qmljstools/qmljsplugindumper.cpp
+++ b/src/plugins/qmljstools/qmljsplugindumper.cpp
@@ -55,16 +55,17 @@ PluginDumper::PluginDumper(ModelManager *modelManager)
     connect(m_pluginWatcher, SIGNAL(fileChanged(QString)), SLOT(pluginChanged(QString)));
 }
 
-void PluginDumper::loadPluginTypes(const QString &libraryPath, const QString &importPath, const QString &importUri)
+void PluginDumper::loadPluginTypes(const QString &libraryPath, const QString &importPath, const QString &importUri, const QString &importVersion)
 {
     // move to the owning thread
     metaObject()->invokeMethod(this, "onLoadPluginTypes",
                                Q_ARG(QString, libraryPath),
                                Q_ARG(QString, importPath),
-                               Q_ARG(QString, importUri));
+                               Q_ARG(QString, importUri),
+                               Q_ARG(QString, importVersion));
 }
 
-void PluginDumper::onLoadPluginTypes(const QString &libraryPath, const QString &importPath, const QString &importUri)
+void PluginDumper::onLoadPluginTypes(const QString &libraryPath, const QString &importPath, const QString &importUri, const QString &importVersion)
 {
     const QString canonicalLibraryPath = QDir::cleanPath(libraryPath);
     if (m_runningQmldumps.values().contains(canonicalLibraryPath))
@@ -87,6 +88,7 @@ void PluginDumper::onLoadPluginTypes(const QString &libraryPath, const QString &
     plugin.qmldirPath = canonicalLibraryPath;
     plugin.importPath = importPath;
     plugin.importUri = importUri;
+    plugin.importVersion = importVersion;
 
     // watch plugin libraries
     foreach (const QmlDirParser::Plugin &plugin, snapshot.libraryInfo(canonicalLibraryPath).plugins()) {
@@ -277,8 +279,10 @@ void PluginDumper::dump(const Plugin &plugin)
     connect(process, SIGNAL(finished(int)), SLOT(qmlPluginTypeDumpDone(int)));
     connect(process, SIGNAL(error(QProcess::ProcessError)), SLOT(qmlPluginTypeDumpError(QProcess::ProcessError)));
     QStringList args;
-    args << plugin.importPath;
+    args << QLatin1String("--notrelocatable"); // ### temporary until relocatable libraries work
     args << plugin.importUri;
+    args << plugin.importVersion;
+    args << plugin.importPath;
     process->start(info.qmlDumpPath, args);
     m_runningQmldumps.insert(process, plugin.qmldirPath);
 }
diff --git a/src/plugins/qmljstools/qmljsplugindumper.h b/src/plugins/qmljstools/qmljsplugindumper.h
index 99e4a147fc8ef378c58548c81c905d6aedd52654..5ae24f9794aa14b63563017bdaa5ff77b4cce233 100644
--- a/src/plugins/qmljstools/qmljsplugindumper.h
+++ b/src/plugins/qmljstools/qmljsplugindumper.h
@@ -59,12 +59,12 @@ public:
 
 public:
     void loadPluginTypes(const QString &libraryPath, const QString &importPath,
-                         const QString &importUri);
+                         const QString &importUri, const QString &importVersion);
     void scheduleCompleteRedump();
 
 private slots:
     void onLoadPluginTypes(const QString &libraryPath, const QString &importPath,
-                           const QString &importUri);
+                           const QString &importUri, const QString &importVersion);
     void dumpAllPlugins();
     void qmlPluginTypeDumpDone(int exitCode);
     void qmlPluginTypeDumpError(QProcess::ProcessError error);
@@ -76,6 +76,7 @@ private:
         QString qmldirPath;
         QString importPath;
         QString importUri;
+        QString importVersion;
 
         bool hasPredumpedQmlTypesFile() const;
         QString predumpedQmlTypesFilePath() const;