필자는 Delphi에서 프로그램을 작성하고 일부 어셈블리 코드 (Pipes.pas)가 포함 된 라이브러리를 포함합니다. StdWndProc라는 함수를 호출하는 코드를 실행할 때 액세스 위반이 발생합니다. 이 프로세스는 어셈블리 코드가 포함 된 어셈블리 함수입니다.32 비트 어셈블리 코드를 64 비트 프로세서에서 실행할 수 있습니까? (Delphi)
유니 코드 지원 및 기타 항목을 포함하도록이 코드 (Pipes.pas)를 업데이트했지만이 어셈블리의 기능을 파악하지 못했습니다. 여기에 무슨 일이 생길지에 대한 아이디어가 있습니까?
64 비트 컴퓨터에서 실행 중이므로이 어셈블리가 32 비트이고 64 비트 프로세서에서 제대로 실행되지 않을 수 있습니까? 프로젝트는 32 비트 빌드를 대상으로합니다.
32 비트 응용 프로그램 용으로 컴파일 할 경우, 32 비트 어셈블리가 작동합니다 32 비트 타겟에서 32 비트 어셈블리를 사용하는 델파이 RTL의 주요 부분이 있습니다. 64 비트 빌드를 대상으로하고 32 비트 라이브러리를 사용하려는 경우 분명히 작동하지 않습니다. 당신이 받고있는 * 정확한 * 오류 메시지를 제공하기 위해 질문을 편집 할 수 있습니까? "액세스 위반이 발생했습니다."는 사용하기에는 너무 모호합니다. –
나는 끔찍한 의혹을 가지고 있습니다 ... 어떤 버전의 델파이를 사용하여 코드를 컴파일합니까? 코드 작성에 사용 된 것과 동일한 것입니까? Delphi 2009에서 유니 코드 지원이 기본 옵션이되었으므로 2009 년 이후에는 이전 Delphi 코드를 버전으로 마이그레이션하는 데 추가 작업이 필요합니다. 자세한 내용은 [link] (http://edn.embarcadero.com/article/40307) – mg30rg
을 참조하십시오. 사용중인 Delphi 버전에 태그를 포함하십시오. 가능하다면 문제에 더 구체적으로 대응하십시오 : 어떤 상황에서 충돌이 발생하고 어떤 상황에서 제대로 작동하는지. 'pipes.pas'를 직접 작성 했습니까 아니면 변경 만 했습니까? –