2017-12-12 3 views
0

LoadLibrary ("my.dll") gibt mein Projekt in VS 2013 mit v120_xp toolset ordnungsgemäß zurück. Aber auf VS 2017 mit v141_xp toolset (Plattform ist 7.1) gibt es NULL und Fehlercode 4250 zurück. Ich stellte sicher, einen sauberen Aufbau beide Zeiten zu machen.LoadLibrary schlägt mit Fehler 4250 fehl: Dieser Vorgang ist nur im Kontext eines App-Containers gültig

Ich kann nicht in LoadLibrary (F11) gehen.

Nachdem diese Zeile Ausführung ProcessMonitor- DATEI NUR DIE LESER auf Create und NAME LOCKED zeigt NOT FOUND auf HKLM \ SOFTWARE \ Microsoft \ Windows \ Currentversion \ SideBySide \ PreferExternalManifest auf RegQueryValue, aber sonst alle ERFOLG

dumpbin/headers ist das gleiche für beide Versionen von my.dll

Dependency Walker hat Fehler wie eine zirkuläre Abhängigkeit, ungelösten Export usw., aber die Version 2013, die funktioniert, scheint die gleichen Fehler zu haben. Mit VS 2017 my.dll hat zusätzliche Abhängigkeit UCRTBased.dll, vcruntime140d.dll.

my.dll ist statisch gegen Boost 1.64 & TBB aber beide diese wurden ohne Windows-Speicher oder universelle Optionen gebaut. Ich benutze Windows 10 und cmake 3.8. Es gibt keine Änderungen an den cmake-Dateien, die die VS-Lösung generieren. Hier

ist das Dependency Walker Profil:

LoadLibraryA("my.dll") called from "d:\myproject\x64\debug\my.EXE" at address 0x00007FF7FCED1DA2. 
Loaded "d:\myproject\x64\debug\my.DLL" at address 0x00007FFA49D40000. Successfully hooked module. 
Loaded "d:\myproject\x64\debug\abc.DLL" at address 0x00007FFA45190000. Successfully hooked module. 
Loaded "c:\windows\system32\OLEAUT32.DLL" at address 0x00007FFA839F0000. Successfully hooked module. 
Loaded "c:\windows\system32\MSVCP_WIN.DLL" at address 0x00007FFA83010000. Successfully hooked module. 
Loaded "c:\windows\system32\OLE32.DLL" at address 0x00007FFA83750000. Successfully hooked module. 
Loaded "d:\myproject\x64\debug\def.DLL" at address 0x00007FFA67FD0000. Successfully hooked module. 
Loaded "d:\myproject\x64\debug\TBB_DEBUG.DLL" at address 0x00007FFA62BE0000. Successfully hooked module. 
Unloaded "d:\myproject\x64\debug\abc.DLL" at address 0x00007FFA45190000. 
Unloaded "d:\myproject\x64\debug\TBB_DEBUG.DLL" at address 0x00007FFA62BE0000. 
Unloaded "c:\windows\system32\MSVCP_WIN.DLL" at address 0x00007FFA83010000. 
Unloaded "c:\windows\system32\OLEAUT32.DLL" at address 0x00007FFA839F0000. 
Unloaded "c:\windows\system32\OLE32.DLL" at address 0x00007FFA83750000. 
Unloaded "d:\myproject\x64\debug\def.DLL" at address 0x00007FFA67FD0000. 
Unloaded "d:\myproject\x64\debug\my.DLL" at address 0x00007FFA49D40000. 
LoadLibraryA("my.dll") returned NULL. Error: This operation is only valid in the context of an app container (4250). 
+0

Vergessen Sie Dependency Walker. Es wurde seit Jahren nicht mehr aktualisiert und kann die in Windows 7 eingeführten umstrukturierten Systemmodule nicht vollständig beheben. Die Ausgabe ist oft irreführend. Zeigen Sie stattdessen den Code, den Sie verwenden, und wie Sie den Fehlercode ermitteln. – IInspectable

Antwort

0

Überprüfen Sie, ob das Programm läuft, von dem Sie denken, es ist (das Arbeitsverzeichnis in dem Debug-Abschnitt der Projekteinstellungen, wenn Ihr Programm nicht mit der aktuellen ändert Verzeichnis selbst).

+0

Ja, es ist das richtige Verzeichnis. Ich kann transitive Ladebibliotheksaufrufe in Prozessmonitor- und Protokollnachrichten im Ausgabefenster sehen. Es erreicht nicht den DllMain-Haltepunkt in my.dll. –

Verwandte Themen