it-swarm-ja.com

このC ++ライブラリの使用

C++ライブラリを呼び出す実行可能ファイル(Cで記述)を使用しようとしています。 Windows Server 2008 ボックスでこのエラーが発生します:

Faulting application name: sample.exe, version: 0.0.0.0, time stamp: 0x4d668157
Faulting module name: MSVCR90.dll, version: 9.0.30729.4974, time stamp: 0x4b7a226f
Exception code: 0xc0000417
Fault offset: 0x0002fc96
Faulting process id: 0xf10
Faulting application start time: 0x01cbd45775cc7011
Faulting application path: C:\Bprobe\sample.exe
Faulting module path: C:\Windows\WinSxS\x86_Microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4974_none_50940634bcb759cb\MSVCR90.dll
Report Id: b37b5e67-404a-11e0-b69c-00155d2fb513

同じEXEファイルがWindows7とWindowsXPで機能するため、コンポーネントが不足していると思います。

何か案は?

これは、Windows Server 2008に限った問題ではないようです。WindowsXPでテストしたところ、同じエラーが発生しました(他のWindows XPボックスが機能していました)。

1
Gonzalo

例外コード0xc0000417はSTATUS_INVALID_CRUNTIME_PARAMETERです。無効なパラメータがCランタイム関数に渡されたようです。

このマシンにアプリケーションがインストールされている場合は、WinDBGまたはVSを使用してデバッガーでアプリケーションを起動します。すべての初回例外でブレークするようにデバッガーを設定し(または、この例外コードを直接追加して、この例外でのみブレークするようにすることもできます)、例外が発生したときに、呼び出しスタックを調べます。 Microsoftのパブリックシンボルサーバーを使用してシンボルを解決します(VS 2008 CRTライブラリシンボルが含まれます)。 .exeの.pdbが存在するか、シンボル検索パスにあります。

モジュールのフレームがコールスタックのどこかにある場合は、最初のフレームを上から下にダブルクリックします。どのCランタイム関数が呼び出されているかを確認してください。

2
Peter Huene

これはライブラリの欠落の問題ではありませんが、提供した情報では問題の診断を開始することすらできません。デバッガーでプログラムを実行して、クラッシュする場所を確認してください。おそらく、使用しているプログラムまたはライブラリのいずれかがWindows 7と互換性がありません。つまり、許可されていないいくつかの悪い仮定を行い、Win7でそれらの仮定が当てはまらないことが判明するとクラッシュします。

ソースコードがない場合は、互換性ウィザードを試してください(exeを右クリック->互換性のトラブルシューティング)。これで問題が解決しない場合は、ベンダーに連絡して、プログラムのバグを修正してもらいます。

0
bdonlan