126번 error가 나는 가장 큰 이유는...
우리가 바보가 아닌이상 해당 DLL의 path를 잘못 지정했을리는 없죠...
문제는 사용하려고 하는 DLL이 다른 DLL을 참조하고 있습니다.
그런데 해당 DLL만을 link 하려고 하니 그 DLL이 참조하는 DLL을 찾을 수가 없어서 error가 나는 겁니다.
예를 들어 사용하려고 하는 DLL은 A.DLL 입니다.
A.DLL은 B.DLL을 참조합니다.
A.DLL과 B.DLL은 C:\DLL\ 밑에 있습니다.
개발하는 위치는 C:\test\ 밑에 있습니다.
test.exe가 LoadLibrary("C:\DLL\A.DLL"); 이렇게 호출을 합니다.
그런데 문제는 test.exe가 A.DLL은 강제로 full path를 넣어서 찾았지만
A.DLL이 참조하는 B.DLL은 system의 경로에 지정되어있지 않은 곳에 위치해 있습니다.
system의 경로라 하면 win\ system32\ 뭐 이런걸 이야기 합니다.
따라서 해결 방법은 B.DLL을 환경설정에서 path로 지정해 줘야 합니다.
뭐 다른 방법으로라도 path가 지정이 되면 되겠죠...
쉽게 테스트 할 수 있는 방법은 test.exe를 c:\DLL\ 밑에 copy를 해 놓고 실행해 보십시오.
잘 로드 될겁니다.
A.DLL이 참조하고 있는 DLL이 뭔가를 알고 싶다면
Dependency Walker 로 찾아보세요.
왼쪽 Tree 창에 쭉 나옵니다.
그럼 즐프하세요... ^^ |