오디날(ordinal) 에러             

 

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
Posted by linuxism
,