다음 GetProcAddress 코드는 Delphi XE6 x64에서 컴파일 할 때 실패합니다. 델파이 x86에서 컴파일하면 잘 돌아갑니다. 잘못된 것이 무엇인지 논평하는 데 도움을 줄 수 있습니까?Delphi XE6 x64에서 컴파일 할 때 GetProcAddress가 실행되지 않습니다.
program Project11;
{$APPTYPE CONSOLE}
{$R *.res}
uses
SysUtils;
var
Library_OpenGL: LongWord;
function LoadLibrary(lpFileName: pAnsiChar): LongWord; stdcall; external 'kernel32.dll' name 'LoadLibraryA';
function GetProcAddress(hModule: LongWord; lpProcName: pAnsiChar): Pointer; stdcall; external 'kernel32.dll' name 'GetProcAddress';
begin
try
Library_OpenGL := LoadLibrary('opengl32.dll');
Assert(GetProcAddress(Library_OpenGL, 'glEnable') <> nil, 'GetProcAddress(Library_OpenGL, ''glEnable'') = nil');
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
ReadLn;
end.
64 비트 프로세스가 명백하게 32 비트 DLL을로드 할 수 있다고 상상할 수 없습니다. 그것은 실패 할 의무가 있습니다. –
@Rudy, 32 비트 및 64 비트 DLL은 모두 opengl32로 명명됩니다. 하나는 system32에, 다른 하나는 syswow64에 있습니다. –
@Ah, Ok, 감사합니다. 왜 지구상에 opengl64라고 부르지 않습니까? –