ordinal이란 해당 DLL이 컴파일 될 때 컴파일러가 익스포트된
함수를 순서대로 번호로 매겨 놓은 것입니다.
*.def 파일을 사용해서 DLL개발자가 순서를 매겨 줄 수도
있습니다.
예를 들어, wsock32.dll의 recv()라는 함수의 ordinal 번호는
16번이고 send()의 번호는 19번이죠. DLL에서 함수를 불러
쓸 때 "recv"나 "send" 등의 이름으로 불러 쓸 수도 있습니다.
질문하신 것에서
||||| 오디날(ordinal) [숫자]. DLL
[이름].dll에서 찾을 수 없습니다 |||||
라고 되었나요?
ordinal이 [숫자]까지 올라갈 것은 별로 없는데...
MFC 관련 DLL을 제외하고는 말이죠.
어쨌든 이 에러는 해당 DLL에 [숫자]번째 함수가 없다는
것을 의미합니다. 실제 이런 에러는 프로그램을 잘못
설치해서 윈도우 System 디렉토리에 구버전의
[이름].DLL이 설치되는 경우가 자주 발생합니다.
예를 들면 컴파일 할 때 쓰인 Lib파일은 6.0.1234용
버전을 사용해야 하는데 막상 실제 [이름].DLL은
4.0.6787이라던지 원래 버전을 초과해버리는
그런 경우가 있다면 원래 버전 (6.0.1234)에 있는
함수가 없을 수도 있습니다. 이런 경우를 예방하기
위해 Install Shield같은 프로그램이 있지만서도
가끔 무시하는 경우도 있는 듯 합니다.
해결방법은 먼저 윈도우 System 디렉토리의 해당 DLL의
버전을 확인하시고, 높은 버전의 DLL을 덮어씌우면 됩니다.
특히 MFC42 같은 DLL이라면 (에러메시지를 보신분이 이런
형태의 DLL이라고 가정할 때) 하드디스크의 파일을 잘
뒤져보시면 서로 몇 가지의 MFC42.dll을 찾을 수 있을
것입니다. 정 그래도 안 될 경우에는 VC를 다시 설치하시면
되겠죠.^^ 컴퓨터의 중요파일은 안전하게 보관하시는 게 좋습니다.
(저기요...이봐요...여어...! 덧글써주세요...^^)
[출처] [불펌] 오디날 관련 에러|작성자 천풍
출처 - http://blog.naver.com/PostView.nhn?blogId=ins_soul80&logNo=20030252757
'Development > Windows Programming' 카테고리의 다른 글
windows prog - msi (0) | 2013.10.10 |
---|