2012-03-25 11 views
4

nicht finden Ich habe sehr seltsames Problem mit meiner C# OpenTK Bildschirmschoner-Anwendung. Wenn ich das Programm kompiliere und es ausführe, bevor ich die Erweiterung ändere, funktioniert es als EXE-Datei ordnungsgemäß. Aber wenn ich die Erweiterung zu SCR ändern und es ausführen, stürzt es mit einer System.EntryPointNotFound-Ausnahme ab (in diesem Fall glCreateProgram-Funktion). Im Debugger habe ich überprüft, dass, wenn ich laufe:Kann einen Einstiegspunkt in der DLL 'opengl32.dll' im Bildschirmschoner

als EXE-Datei: GL.GetString (StringName.Vendor) -> "Intel" GL.GetString (StringName.Version) -> „2.1.0 - Bauen 8.15.10.2622"

als SCR-Datei: GL.GetString (StringName.Vendor) -> "Microsoft" GL.GetString (StringName.Version) -> "1.1.0"

In meiner Anwendung I verwende parameterlosen Konstruktor der GameWindow-Klasse, um OpenGL-Kontext zu erstellen. Für ein kleines Experiment habe ich die Erweiterung auf BAT geändert und es läuft sehr gut. Ich habe keine Ahnung, warum mein OpenGL-Kontext von der Dateierweiterung abhängt, ich nehme an, dass Bildschirmschoner vom System auf irgendeiner Art von Overlay ausgeführt werden, aber wirklich konnte ich keine Lösung für dieses Problem finden.

Irgendwelche Ideen?

+0

Dies ist eine DLL-Hölle Problem, Sie mehr als eine Version von opengl32.dll auf Ihrem Rechner haben. Windows findet ein anderes, wenn Sie es in .scr umbenannten, zweifellos das in c: \ windows \ system32 –

+0

Ich überprüfte das, auf meinem Computer habe ich zwei Kopien der Bibliothek opengl32.dll - zuerst in C: \ Windows \ System32 \ und der zweite in C: \ Windows \ winsxs \ ..., aber beide Dateien sind identisch. –

+1

Richtig, das ist die Microsoft-Version. Sie haben die Intel-Version noch nicht gefunden. Natürlich kann Ihr EXE-Programm. Aktivieren Sie das nicht verwaltete Debugging, und sehen Sie sich Debug + Windows + Modules an, um zu sehen, wo es sich befindet. –

Antwort

1

Schließlich fand ich nach langer Suche heraus, dass Intel Hardware-Unterstützung für Bildschirmschoner mit OpenGL blockiert. Ich habe die Erweiterung zu "sCr" geändert, um den Treiber zu täuschen, und jetzt funktioniert alles einwandfrei.

-Link: opengl.org forum

Verwandte Themen