0

.for (fortran) と .c ソース ファイルの組み合わせからコンパイルされた .exe があります。

グラフィック サーバーのエラーのため、Win98 以降では実行できません。

「Ox7e4467a9 のユーザー 32.dll でアクセス違反エラーが発生しました」</p>

上記のエラー (?) を回避する方法が他にない限り、最新のグラフィック サーバーを使用してソースから .exe を再コンパイルする必要があると思います。このバーを実行するためのすべてのファイルが 1 つの .lib ファイルにあります。

不足している lib ファイルに関する情報を現在の .exe から取得することはできますか?

.exe を逆アセンブルすることは可能ですが、これで得られることはあまりないと思いますか?

4

2 に答える 2

1

おそらく、実行可能ファイルから lib ファイルを「切り取る」ことはできません。何らかの方法でそこからコードを取得できたとしても、必要なリンク情報が含まれていないため、標準のコンパイラとリンカーはそれに対してリンクする方法を知りません (結果のバイナリには含まれません)。

ただし、プログラムが Win98 では動作するが、NT ベースのシステム (XP、Vista、Win7) では動作しないという問題がある場合は、プログラムをクラッシュさせる非互換性が何であるかを見つけるのが簡単だと思います。user32.dll でアクセス違反が発生しているとのことでした。デバッガー内でプログラムを開始し、クラッシュが発生した関数を確認します。PDB シンボルが読み込まれていることを確認してください (これにより、内部の非パブリック関数の名前を確認できます)。呼び出された Win32 API とそのパラメーターを追跡します。アクセスできないメモリに何があるべきかを考えてみてください。

また、他の情報がなければ、それを手助けすることは不可能です.

于 2012-04-26T14:50:51.307 に答える