내 프로그램을 DLL에 늦게 바인딩하려고합니다.
내가 어떻게 내가 이런 정의가 하나의 헤더 파일을 메서드를 가져올 수 있지만, 알고 :"extern"으로 정의 된 변수가있는 라이브러리에 대한 후기 바인딩
EXTERN_C const IID SomeVariable;
?
내 프로그램을 DLL에 늦게 바인딩하려고합니다.
내가 어떻게 내가 이런 정의가 하나의 헤더 파일을 메서드를 가져올 수 있지만, 알고 :"extern"으로 정의 된 변수가있는 라이브러리에 대한 후기 바인딩
EXTERN_C const IID SomeVariable;
?
GetProcAddress를 사용하여 함수 또는 변수의 주소를 가져올 수 있습니다.
MSDN의 GetProcAddr()을 참조하십시오.
const IID *idp = reinterpret_cast<const IID *>(GetProcAddr(hLibrary, "SomeVariable"));
이제 포인터를 통해 SomeVariable
을 참조 할 수 있습니다 - 당신이 자신의 포인터를 통해 기능을 참조 할 수 있습니다 좋아한다. 물론 포인터를 실제로 사용하기 전에 포인터가 null이 아닌지 확인해야합니다.
함수에 대해 수행중인 후기 바인딩에 대해 자세히 설명해 주시겠습니까? –
함수의 서명을 알고 있으므로 일치하는 함수 포인터를 정의합니다. 그런 다음 DLL 핸들과 함수 이름을 사용하여 "GetProcAddress"를 호출합니다. 결과를 함수 포인터의 인스턴스에 할당 한 다음 다른 함수로 사용할 수 있습니다. – Idov
이 변수가 방금 내보내지지 않을 확률이 매우 높습니다. DLL에서 dumpbin.exe/exports를 사용하여 다시 확인하십시오. –