2012-04-23 4 views
0

.for (fortran)와 .c 소스 파일의 조합으로 컴파일 된 .exe 파일이 있습니다..lib 파일과 디 컴파일 파일

그것은 인해 그래픽 서버 오류로, 나중에는 Win98 이상의 아무것도 실행되지 않습니다

: 주위에 다른 방법이없는 한

"액세스 위반 오류 사용자 32.dll에서 Ox7e4467a9에서"

위의 오류 (?), 나는 현대적인 그래픽 서버를 사용하여 소스에서 .exe를 다시 컴파일해야한다고 가정합니다. 나는이 막대 하나. lib 파일을 할 수있는 모든 파일을 가지고!

누락 된 lib 파일에 대한 정보를 현재 .exe에서 가져올 수 있습니까?

.exe를 분해 할 수는 있지만이 문제는별로 도움이되지 않습니까?

답변

1

아마도 실행 파일에서 lib 파일을 "자를 수 없습니다". 어떻게 든 코드를 얻을 수 있다고해도 표준 컴파일러와 링커는 필요한 링크 정보 (결과 바이너리에는 포함되지 않음)가 없기 때문에 링크하는 법을 알 수 없습니다.

그러나 프로그램이 Win98에서 작동하지만 NT 기반 시스템 (XP, Vista, Win7)에서 실행되지 않는 것이 문제라면, 알아내는 것이 더 쉬울 것이라고 생각합니다. 프로그램을 중단시킵니다. 사용자가 user32.dll에서 액세스 위반이 발생한다고 언급했습니다. 디버거에서 프로그램을 시작하고 충돌이 발생한 함수를 살펴보십시오. PDB 심볼을로드했는지 확인하십시오 (내부 비공개 함수의 이름을 볼 수 있도록). 어떤 Win32 API가 호출되었고 그 매개 변수는 무엇인지 추적합니다. 알아낼 수없는, 액세스 할 수없는 메모리에 있어야합니다.

다른 정보가 없어도이를 도와 드릴 수 없습니다.

0

일단 이미지 파일 (exe)에 통합되면 응용 프로그램에 정적으로 바인딩 된 링커 (.lib)는 분리 할 수 ​​없으며 사용자 코드와 구별 될 수 없으므로, exe를 디 컴파일하여 lib에서 코드를 검색 할 수 없습니다.