diff --git a/installer/installbuilder/swift-plugin-simulators.xml b/installer/installbuilder/swift-plugin-simulators.xml
index 3ff360fd5..a31fcc93b 100644
--- a/installer/installbuilder/swift-plugin-simulators.xml
+++ b/installer/installbuilder/swift-plugin-simulators.xml
@@ -96,11 +96,6 @@ This plugin acts as the interface between swift and MSFS.
windows
-
- equals
- ${architecture}
- 32
-
diff --git a/mkspecs/features/common_pre.prf b/mkspecs/features/common_pre.prf
index 99b9e5cd7..b4293a808 100644
--- a/mkspecs/features/common_pre.prf
+++ b/mkspecs/features/common_pre.prf
@@ -103,8 +103,8 @@ win32-g++: CONFIG += separate_debug_info
# FSX or FS9 on 32bit Windows only
################################
-!win32: disableSwiftConfig(sims.p3d)
-equals(WORD_SIZE,64)|!win32: disableSwiftConfig(sims.fsx, sims.fs9, sims.fs2020)
+!win32: disableSwiftConfig(sims.p3d, sims.msfs)
+equals(WORD_SIZE,64)|!win32: disableSwiftConfig(sims.fsx, sims.fs9)
# equals(WORD_SIZE,64):win32-g++: disableSwiftConfig(sims.p3d)
################################
diff --git a/src/plugins/simulator/fsxcommon/simconnectsymbols.cpp b/src/plugins/simulator/fsxcommon/simconnectsymbols.cpp
index d00b77153..657a27007 100644
--- a/src/plugins/simulator/fsxcommon/simconnectsymbols.cpp
+++ b/src/plugins/simulator/fsxcommon/simconnectsymbols.cpp
@@ -244,6 +244,35 @@ bool loadAndResolveP3DSimConnect(P3DSimConnectVersion version)
return false;
}
}
+
+bool loadAndResolveMSFSimConnect()
+{
+ // Check if already loaded
+ if (gSymbols.SimConnect_Open) { return true; }
+
+ QString simConnectFileName(QStringLiteral("SimConnect.MSFS"));
+
+ QLibrary simConnectDll(simConnectFileName);
+ simConnectDll.setLoadHints(QLibrary::PreventUnloadHint);
+ if (simConnectDll.load())
+ {
+ const bool resolvedCommon = resolveCommonSimConnectSymbols(simConnectDll);
+ if (!resolvedCommon)
+ {
+ CLogMessage(CLogCategories::driver()).error(u"Failed to resolve common symbols from SimConnect.dll: '%1'") << simConnectFileName;
+ return false;
+ }
+
+ CLogMessage(CLogCategories::driver()).info(u"Loaded and resolved MSFS symbols from SimConnect.dll: '%1'") << simConnectFileName;
+ return resolvedCommon;
+ }
+ else
+ {
+ CLogMessage(CLogCategories::driver()).error(u"Failed to load SimConnect.dll: '%1' '%2'") << simConnectFileName << simConnectDll.errorString();
+ return false;
+ }
+}
+
#else
bool loadAndResolveFsxSimConnect(bool manifestProbing)
{
diff --git a/src/plugins/simulator/fsxcommon/simconnectsymbols.h b/src/plugins/simulator/fsxcommon/simconnectsymbols.h
index d7b39c23c..f88500a42 100644
--- a/src/plugins/simulator/fsxcommon/simconnectsymbols.h
+++ b/src/plugins/simulator/fsxcommon/simconnectsymbols.h
@@ -39,6 +39,8 @@ FSXCOMMON_EXPORT bool loadAndResolveP3DSimConnect(P3DSimConnectVersion version);
//! Same but string version
inline bool loadAndResolveP3DSimConnectByString(const QString &version) { return loadAndResolveP3DSimConnect(stringToP3DVersion(version)); }
+FSXCOMMON_EXPORT bool loadAndResolveMSFSimConnect();
+
#else
//! Load and resolve FSX SimConnect.
diff --git a/src/plugins/simulator/msfs/msfs.pro b/src/plugins/simulator/msfs/msfs.pro
index 891a78714..1e7301530 100644
--- a/src/plugins/simulator/msfs/msfs.pro
+++ b/src/plugins/simulator/msfs/msfs.pro
@@ -6,7 +6,7 @@ TEMPLATE = lib
CONFIG += plugin shared
CONFIG += blackconfig blackmisc blackcore blackgui
-CONFIG += simulatorfsxcommon simulatorfscommon simulatorplugincommon simconnect
+CONFIG += simulatorfsxcommon simulatorfscommon simulatorplugincommon
DEPENDPATH += . $$SourceRoot/src
INCLUDEPATH += . $$SourceRoot/src
@@ -17,8 +17,7 @@ HEADERS += *.h
DEFINES += SIMCONNECT_H_NOMANIFEST
equals(WORD_SIZE,64) {
- SIMCONNECT_INCLUDE += $$EXTERNALSROOT/common/include/simconnect/P3D-v4
- DEFINES += P3D_SDK_VERSION=400
+ SIMCONNECT_INCLUDE += $$EXTERNALSROOT/common/include/simconnect/MSFS
}
equals(WORD_SIZE,32) {
SIMCONNECT_INCLUDE += $$EXTERNALSROOT/common/include/simconnect/FSX-XPack
diff --git a/src/plugins/simulator/msfs/simulatormsfs.cpp b/src/plugins/simulator/msfs/simulatormsfs.cpp
index 7979fd515..cdb69c613 100644
--- a/src/plugins/simulator/msfs/simulatormsfs.cpp
+++ b/src/plugins/simulator/msfs/simulatormsfs.cpp
@@ -42,14 +42,24 @@ namespace BlackSimPlugin
bool CSimulatorMsFs::connectTo()
{
- //if (!loadAndResolveFsxSimConnect(true)) { return false; }
+ #ifdef Q_OS_WIN64
+ if (!loadAndResolveMSFSimConnect()) { return false; }
return CSimulatorFsxCommon::connectTo();
+ #else
+ if (!loadAndResolveFsxSimConnect(true)) { return false; }
+ return CSimulatorFsxCommon::connectTo();
+ #endif
}
void CSimulatorMsFsListener::startImpl()
{
- //if (!loadAndResolveFsxSimConnect(true)) { return; }
- return CSimulatorFsxCommonListener::startImpl();
+ #ifdef Q_OS_WIN64
+ if (!loadAndResolveMSFSimConnect()) { return; }
+ CSimulatorFsxCommonListener::startImpl();
+ #else
+ if (!loadAndResolveFsxSimConnect(true)) { return; }
+ CSimulatorFsxCommonListener::startImpl();
+ #endif
}
} // ns