명시 적으로 라이브러리를로드하는 명확한 방법을 찾고 있습니다. 대부분 LIB와 DLL 쌍을 가지고있어서 LIB가 모든 "load stuff"를 처리하고 dll에서 직접 함수를 호출 할 수 있습니다. 명시 적으로이 일을 할 때, 나는 다음의 정렬을 수행해야합니다명시 적으로 라이브러리를로드하는 명확한 방법
이HMODULE libA = LoadLibrary("dllA.dll"); // NULL if load failed
HMODULE libB = LoadLibrary("dllB.dll"); // NULL if load failed
void (*functionA)(void) = libA ? GetProcAddress(libA,"functionA"):NULL;
void (*functionB)(void) = libB ? GetProcAddress(libB,"functionB"):NULL;
그것은 지저분한 것입니다 경우에서 LoadLibrary() 내가 DLL에서 함수를 호출 할 때 GetProcAddress를()가 모두 내 코드에 걸쳐 발견된다. 나는 내가 1-2 개의 파일 내에서 모든 처리를 작성하고 LIB와 DLL 쌍을 통해 암시 적으로 라이브러리를로드하는 것처럼 함수를 호출 할 수있는 깨끗한 방법이 있는지 알고 싶습니다.
한 번에 한 곳에서 'LoadLibrary'를 호출하고 GetProcAddress를 여러 번 호출하여 모든 함수 포인터를 얻고이를 사용할 수 있습니다. 당신은 또한이 DLL에 대한 지연로드를 구현할 수 있습니다 – RbMm
이것은 프로그래밍 101입니다. 당신을 위해이 기능을 마무리하고 세부 사항으로부터 당신을 보호하는 함수 또는 클래스를 생성하십시오. –
일부 추상화를 제공하는 [Boost.DLL] (http://www.boost.org/doc/libs/release/doc/html/boost_dll.html)을 살펴볼 수도 있습니다. 아직 사용하지는 않았지만 [예제] (http://www.boost.org/doc/libs/release/doc/html/boost_dll/tutorial.html#boost_dll.tutorial.plugin_basics)는 매우 깨끗해 보입니다. – zett42