1

私は、マネージコードのライブラリを呼び出すアンマネージコードを持つアプリケーションのレガシーライブラリのいくつかを再編成しているところです。コードを再編成している間、次のローダーエラーが発生します。

 
...
'app.exe': Loaded 'C:\WINDOWS\system32\CsDisp.dll'
'app.exe': Loaded 'C:\WINDOWS\system32\psapi.dll'
'app.exe': Loaded 'C:\WINDOWS\system32\shell32.dll'
'app.exe': Loaded 'C:\appCode\Debug\daq206_32.dll', Binary was not built with debug information.
'app.exe': Loaded 'C:\appCode\Debug\SiUSBXp.dll', Binary was not built with debug information.
'app.exe': Loaded 'C:\appCode\Debug\AdlinkDAQ.dll', Symbols loaded.
'app.exe': Loaded 'C:\WINDOWS\system32\P9842.dll', Binary was not built with debug information.
LDR: LdrRelocateImageWithBias() failed 0xc0000018
LDR: OldBase     : 10000000
LDR: NewBase     : 00A80000
LDR: Diff        : 0x7c90d6fa0012f6cc
LDR: NextOffset  : 00000000
LDR: *NextOffset : 0x0
LDR: SizeOfBlock : 0xa80000
Debugger:: An unhandled non-continuable exception was thrown during process load
 

0xc0000018エラーはアドレス範囲の重複だと思います。それで、私は2つの質問があります。まず、どのリンカーオプションがこのエラーを引き起こす可能性がありますか?現在、/ DYNAMICBASE:NOおよび/ FIXED:Noとリンクしています。これは、以前のライブラリの一部が設定された方法であるためです。
次に、ローダーの冗長モードをオンにして、ローダーが何をロードしようとしているのかを正確に確認できるようにする方法はありますか?P9842はサードパーティのライブラリであるため、P9842の後に私のライブラリの1つにアクセスし、そのライブラリで失敗していると思います。絞り込めますか?ありがとう。

4

1 に答える 1

1

最初の質問についてはわかりません。そのステータスコードの検索は、「XP以前はWindowsで異なるメモリタイプのページマッピングのチェックがありませんでした。WindowsXPはチェックします。2回目のメモリタイプマッピングの試行はSTATUS_CONFLICTING_ADDRESSES(0xc0000018)で失敗します) エラーメッセージ。" MapViewOfFileを使用している場合は、関連がある可能性があります。

2番目の質問では、ローダースナップを確認します。msdnでこの記事を参照してください。このコマンドは役立つはずです: "gflags -i yourApp.exe + sls"

于 2010-04-12T15:38:59.783 に答える