2017-12-12 8 views
0

v120_xpツールセットを使用してVS 2013でプロジェクトをビルドすると、LoadLibrary( "my.dll")が正常に戻ります。しかし、VS2017でv141_xpツールセット(プラットフォーム7.1)を使用すると、NULLとエラーコード4250が返されます。私は両方ともクリーンビルドを確実に行いました。LoadLibraryがエラー4250で失敗する:この操作は、アプリケーションコンテナのコンテキストでのみ有効です。

私はLoadLibrary(F11)にステップインできません。

その行を実行した後ProcessMonitorはFILEがCreateFileMapping関数にONLY読者とLOCKED示し、NAME RegQueryValueにHKLM \ SOFTWARE \マイクロソフト\ Windowsの\ CurrentVersionの\ SideBySide \ PreferExternalManifestにはありませんが、それ以外はすべてSUCCESS

DUMPBIN /ヘッダがあります両方のバージョンのmy.dllで同じ

依存関係ウォーカーには循環依存関係、未解決のエクスポートなどのエラーがありますが、動作する2013バージョンには同じエラーがあるようです。 VS 2017でmy.dllには、UCRTBased.dll、vcruntime140d.dllの依存関係が追加されています。

my.dllはBoost 1.64 & TBBに静的にリンクされていますが、どちらもWindowsストアやユニバーサルオプションなしでビルドされています。私はWindows 10とcmake 3.8を使用しています。 VSソリューションを生成するcmakeファイルに変更はありません。プログラムはあなたのプログラムが電流を変更しない場合には、プロジェクト設定のデバッグセクションで、(作業ディレクトリであると考えるところから実行されていること

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

依存関係ウォーカーを忘れる。それは年月が経っても更新されておらず、Windows 7で導入されたリファクタリングされたシステムモジュールには完全には対応していません。代わりに、使用しているコードと、エラーコードを特定する方法を表示してください。 – IInspectable

答えて

0

がチェック:ここ

は、依存関係ウォーカープロファイルですディレクトリ自体)。

+0

はい、正しいディレクトリです。私は、出力ウィンドウにプロセスモニタとログメッセージの推移的なロードライブラリ呼び出しを見ることができます。 my.dllのDllMainブレークポイントに到達していません。 –

関連する問題