Fehlende Einstiegspunkte in USER32.dll verhindern, dass das Programm gestartet wird, C ++, VS2015

Ich schreibe ein C ++ - Programm mit VS2015 (Platform Toolset v140, Target Platform 8.1) auf einem Windows 10-Computer, und mein Programm lief bis vor kurzem unter Windows 7, 8 und 10 einwandfrei.

Nach dem Hinzufügen von Touch-Unterstützung mitGetPointerInfo(), Ich erhalte diesen Popup-Fehler sofort bei der Ausführung auf Windows 7-Computern:

Kann keinen Einstiegspunkt mit dem Namen GetPointerInfo in USER32.dll finden

MS gibt eindeutig an, dassGetPointerInfo() wird nur unter Win8 und höher unterstützt, und das ist in Ordnung, aber ich möchte die Kompatibilität meines Programms mit Windows 7 nicht ganz aufheben.

Ich nehme an, Windows 7-Version vonUSER32.DLL enthält die Funktion überhaupt nicht, fügt aber Laufzeitprüfungen in mein Programm ein (d. h. ruft nur @ aGetPointerInfo() wennIsWindows8OrGreater() gibt true zurück) erledigt den Trick nicht.

Tatsächlich kompiliere ich mein Programm nur mit einem Verweis aufGetPointerInfo() unterbricht die Win7-Kompatibilität, unabhängig davon, ob die Funktion tatsächlich aufgerufen wird oder nicht. Das Programm gibt nicht einmal @ eWinMain(), es wirft mir nur diese Nachricht und beendet.

Again, ab Windows 8 funktioniert alles einwandfrei.

Wie löse ich das?

Ich habe einen halben Tag lang gegoogelt, aber mit sehr geringen Kenntnissen über DLLs, Linker- und Compilereinstellungen weiß ich offensichtlich nicht einmal, wie ich meine Suchanfragen formulieren soll, da ich bisher leer geblieben bin.

ch habe sowohl Multi-Threaded (/ MT) als auch Multi-Threaded-DLL (/ MD) als meine Laufzeitbibliothek ausprobier

Ich habe auch versucht, die Verknüpfung auf Funktionsebene zu aktivieren und zu deaktivieren, aber das Ergebnis bleibt gleich.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage