2012-01-07 4 views
3

내 프로그램을 DLL에 늦게 바인딩하려고합니다.
내가 어떻게 내가 이런 정의가 하나의 헤더 파일을 메서드를 가져올 수 있지만, 알고 :"extern"으로 정의 된 변수가있는 라이브러리에 대한 후기 바인딩

나는 "확인되지 않은 외부 기호"오류가 발생하지 않고 내 프로그램에서이 변수를 참조 할 수 있습니다 어떻게
EXTERN_C const IID SomeVariable; 

?

+0

함수에 대해 수행중인 후기 바인딩에 대해 자세히 설명해 주시겠습니까? –

+0

함수의 서명을 알고 있으므로 일치하는 함수 포인터를 정의합니다. 그런 다음 DLL 핸들과 함수 이름을 사용하여 "GetProcAddress"를 호출합니다. 결과를 함수 포인터의 인스턴스에 할당 한 다음 다른 함수로 사용할 수 있습니다. – Idov

+1

이 변수가 방금 내보내지지 않을 확률이 매우 높습니다. DLL에서 dumpbin.exe/exports를 사용하여 다시 확인하십시오. –

답변

2

GetProcAddress를 사용하여 함수 또는 변수의 주소를 가져올 수 있습니다.

1

MSDN의 GetProcAddr()을 참조하십시오.

const IID *idp = reinterpret_cast<const IID *>(GetProcAddr(hLibrary, "SomeVariable")); 

이제 포인터를 통해 SomeVariable을 참조 할 수 있습니다 - 당신이 자신의 포인터를 통해 기능을 참조 할 수 있습니다 좋아한다. 물론 포인터를 실제로 사용하기 전에 포인터가 null이 아닌지 확인해야합니다.

관련 문제