BUG: 다른 형식 라이브러리에 참조를 실행 플랫폼 의존 렌더링 있다

기술 자료 번역 기술 자료 번역
기술 자료: 281913 - 이 문서가 적용되는 제품 보기.
이 문서가 보관되었습니다. "그대로" 제공되었으며, 업데이트가 되지 않을 것입니다.
모두 확대 | 모두 축소

이 페이지에서

현상

둘 이상의 형식 라이브러리 (예: Microsoft Windows 2000 기반 컴퓨터) 한 플랫폼에서 참조하는 Visual Basic 프로젝트를 컴파일, 후 결과 이진 Microsoft Windows NT 4-, Microsoft Windows 95-, Microsoft Windows 98-, 및 Microsoft Windows ME 기반 컴퓨터) 같은 다른 플랫폼에서 실행할 수 실패하고 동안 액세스 위반 (AV)를 가져옵니다.

원인

dllname 형식 라이브러리의 항목을 읽을 때 Visual Basic 컴파일러에서 대/소문자를 구분합니다. 따라서 프로젝트를 참조하는 두 개 이상의 형식 라이브러리 및 라이브러리, dllname("kernel32.dll") 및 dllname("KERNEL32.DLL") 라이브러리의 B 같은 서로 다른 라이브러리 내의 다른 경우에는 같은 DLL의 dllname 항목에 철자를 경우 컴파일러는 두 가져오기 섹션을 같은 DLL에 [NULL]에 대한 생성하고 이진 플랫폼 종속 렌더링합니다.

현재 상태

Microsoft는 이 문서의 시작 부분에 나열한 제품에서 문제를 확인했습니다.

추가 정보

문제를 재현하기 위한 단계

  1. Windows 2000 기반 컴퓨터 및 Windows NT 4 기반 컴퓨터에 최신 서비스 팩이 모두 설정하십시오. 또한 Visual Basic 및 Visual C++ 6.0 서비스 팩 5 두 컴퓨터에서 모두 설치하십시오.
  2. Windows 2000 기반 컴퓨터에서 복사/붙여넣기 다음 IDL (인터페이스 설명 언어) 메모장에, 코드 및 lcase.idl 파일로 저장합니다. MIDL.EXE, midl lcase.idl 컴파일하십시오. 결과 형식 라이브러리를 lcase.tlb 라는.
    [
      uuid(D618AA4D-814A-47a2-9AC1-DDE18EDF1C54),
      version(1.0),
      helpstring("Lower case test")
    ]
    library lcasetest
    {
        [
          dllname("kernel32.dll"),
          version(1.0),
          helpstring("Sleep function exported by kernel32.dll")
        ]
        module lcasetest {
            [
    			entry("Sleep"), 
    			helpstring("sleep - lcase test.")
    		]
            void _stdcall Sleep([in] long dwMS);
        };
    };
    					
  3. 다음 IDL 코드 를 함께 ucase.tlb 으로 1 단계에서 빌드:
    [
      uuid(3F215C63-D0AD-4980-93F2-5DDF850061E4),
      version(1.0),
      helpstring("Upper case test")
    ]
    library ucasetest
    {
        [
          dllname("KERNEL32.DLL"),
          version(1.0),
          helpstring("Sleep function exported by kernel32.dll")
        ]
        module lcasetest {
            [
    			entry("Sleep"), 
    			helpstring("sleep - ucase test.")
    		]
            void _stdcall Sleep([in] long dwMS);
        };
    };
    					
  4. Visual Basic 표준 EXE 프로젝트를 만듭니다. 기본적으로 Form1이 만들어집니다.
  5. 프로젝트 메뉴에서 참조 선택하려면 클릭하십시오. 참조 대화 상자에서 lcase.tlbucase.tlb 찾아보기 두 라이브러리 모두 선택한 다음 확인 을 클릭하십시오.
  6. Form1에 다음 코드를 추가합니다:
    Private Sub Form_Load()
        lcasetest.Sleep 1
        ucasetest.Sleep 1
    End Sub
    					
  7. 파일 메뉴에서 저장 프로젝트를 클릭한 다음 프로젝트를 컴파일하여 만들기 Project1.exe 선택하십시오.
  8. Project1.exe, 실행 파일을 실행하고 폼을 오류 없이 나타납니다.
  9. Project1.exe Windows NT 4 기반 컴퓨터로 복사하고 이를 실행하십시오. 참고 액세스 위반이 발생합니다.
  10. 복사 및 Windows NT 4 기반 컴퓨터에서 동일한 프로젝트를 컴파일하고 모두 Windows NT 4 및 Windows 2000 기반 컴퓨터에서 실행하십시오. Windows 2000 기반 컴퓨터에서 실패한 유의하십시오.

속성

기술 자료: 281913 - 마지막 검토: 2014년 2월 24일 월요일 - 수정: 3.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Visual Basic 4.0 Enterprise Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 6.0 Learning Edition
키워드:?
kbnosurvey kbarchive kbmt kbbug kbcompiler kbnofix KB281913 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com