2013-02-20 4 views
1

일부 16 비트 DLL을로드하여 응용 프로그램의 일부 기능을 수행하는 16 비트 실행 파일을 시작하는 32 비트 응용 프로그램을 작성했습니다 . Windows 7 32 비트에서는 제대로 실행되지만 Windows 7 64 비트에서는 실행되지 않습니다.이 버전의 OS에는 NTVDM이 포함되어 있지 않기 때문입니다.Windows 7 64 비트에서 32 비트 프로세스에 16 비트 DLL로드

코드의 16 비트 부분은 꽤 광범위하며 32 비트로 이식하는 데 꽤 비쌉니다. 또한 비즈니스에서 더 이상 존재하지 않는 회사의 일부 타사 16 비트 API를 사용합니다. 따라서 코드를 완전히 다시 작성해야하므로 비용이 증가합니다.

기존의 16 비트 DLL을 32 비트 응용 프로그램에서 직접로드하여 16 비트 실행 파일을 완전히 제거 할 수 있습니까?

썽킹을 조사했지만 Windows 7에서도 지원되지 않습니다.

+3

로드 할 수 있다고해도 어떻게 실행 하시겠습니까? 16 비트 코드는 다른 프로세서 아키텍처를 기대하며, 지원 DLL은 존재하지 않으며, 존재한다고해도 거기에없는 커널과 통신하려고 시도합니다. –

+0

프로그램의 범위가 넓 으면 32 비트 또는 64 비트 코드로 다시 컴파일 할 때 유용합니다 (특히 레지스터가 두 배가되는 64 비트 모드). 이전 API보다 훨씬 강력한 대체 API를 찾아 보거나 작성해야합니다. 이 경우 에뮬레이터를 사용할 수없는 경우에만 가능합니다. –

답변

1

에뮬레이터 또는 가상 컴퓨터를 사용해야합니다.

또는 그 다음 원시적 에뮬레이터를 직접 작성 할 수있는 옵션이 아닌 경우 machinecode 명령어로 명령어를 읽고 그에 따라 가짜 레지스터와 메모리를 수정하고 프로그램이 외부 호출 할 때 당신은해야합니다 응답을 생성합니다.

1

아니요. Windows에서는이 기능을 사용할 수 없습니다.

관련 문제