ADO 사용하여 EOF 때 사용한 # import 함께 PRB: 충돌

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

이 페이지에서

현상

# import 함께 데이터베이스 API의, 같은 ADO (ActiveX 데이터 개체 (), Windows 응용 프로그램 내에서 typelib 캡슐화하는 클래스를 생성할 수 있습니다. 예를 들어,:
   // Excerpt from Stdafx.h
   #include <afxwin.h>           // MFC core and standard components.
   ...
   #import <msado15.dll>        //for ADO 1.0, import "msado10.dll"
 
				
그렇게 경우 Recordset.EOF 속성에 대한 ADO # import에서 다음과 같은 오류가 나타날 수 있습니다.
오류 C2629: 예기치 않은 ' 짧은 ('
C2238 오류: 예기치 않은 토큰이 앞의 ';'
(DUPS.exe) DLL 범용 문제 해 찾기 도구를 2000년 1월 문서화된 모든 유틸리티가 포함되어 샘플입니다 MSDN Microsoft 개발자 네트워크 뉴스 기사 ", 끝 DLL 지옥과." 해당 MSDN 검토하십시오 이 문서를 읽기 전에 문서를 참조하십시오.

DUPS 패키지를 사용하여 여러 Windows 기반 컴퓨터에서 DLL 버전 비교 및 추적할 수 있는 유틸리티 집합입니다. 최대 SQL Server 또는 Access 설치에 의해 제어됩니다. Windows 95 또는 Windows 98, Windows NT 4.0 및 Windows 2000 시스템에서 DLL 열거합니다 Dlister 클라이언트가 실행됩니다. 보기 유틸리티 Windows NT 4.0 및 Windows 2000에서 개발된 및 Microsoft Access 또는 Microsoft SQL Server 필요합니다. Microsoft Access 97 및 이후 버전 및 SQL Server 6.5 및 이후 버전에서는 테스트했습니다.

원인

Stdio.h, Ios.h 또는 Afxwin.h 등의 Streamb.h 사용하는 응용 프로그램 내에서 EOF 상수 (-1) 이미 정의되어 있습니다. ADO의 레코드 또는 RDO EOF 속성을 정의할 수 있는 # import 다음 시도 결과 집합 개체, ADO 1.0을 사용할 경우 생성된 코드의 다음 줄에 C2629/C2238 오류, msado15.tlh 또는 msado10.tlh) 생성합니다 파일:
VARIANT_BOOL EOF;
				
이 줄, 변수 정의 했으나 EOF -1로 이미 정의된 있습니다. 따라서 위해 이 코드 줄을 구문:
short -1;
				
-올바른 변수 이름이 없기 때문에 이 컴파일되지 않습니다.

해결 방법

이 문제를 해결하려면 # import 이름 특성을 다음과 같이 사용할 수 있습니다:
   #import <msado15.dll>
    rename( "EOF", "A_EOF" )
				
Rename 새 값으로 지정된 형식 라이브러리를 # import 찾습니다 "EOF" 문자열의 이름을 변경합니다.

ADO 가져오기 뒤에 전에 EOF 정의되지 않은 다른 수정 것입니다:
#undef EOF
#import <msado15.dll> rename_namespace("ADO20")
				

현재 상태

이것은 의도적으로 설계된 동작입니다.

추가 정보

Microsoft 다운로드 센터에서 다음 파일을 다운로드 할 수 있습니다:

DUPS.exe
릴리스 날짜: Jan-14-2000

Microsoft 지원 파일을 다운로드하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
119591온라인 서비스로부터 Microsoft 지원 파일 구하는 방법
Microsoft는 이 파일에 대한 바이러스를 검색합니다. Microsoft는 파일을 게시한 날짜에 사용할 수 있었던 최신 바이러스 검색 소프트웨어가 사용됩니다. 해당 파일을 무단으로 변경할 수 없는 보안이 향상된 서버에 보관됩니다. 이 기사와 함께 제공되는 코드 주기적으로 업데이트됩니다. 모든 메모 시작 및 향후 업데이트로 간주됩니다. (전송 hotlink을 오른쪽 프레임에서 주석 달기 위해 사용합니다.)
Microsoft을 배제하며 제한되지 않은 묵시적된 보증 (상품성 및 특정 목적에의 적합성에 대한 묵시적인, 목적으로만 프로그래밍 예제를 제공합니다. 이 문서에서는 프로시저를 작성하고 디버깅하는 데 사용되는 도구 및 여기서 설명하는 프로그래밍 언어에 익숙한 사용자를 대상으로 합니다. Microsoft 기술 지원 담당자는 특정 절차에 대한 기능을 설명할 수 있지만 추가 기능을 제공하거나 특정 요구 사항에 맞도록 프로시저를 구성하지는 이 예제를 수정하지 않습니다.
프로그래밍 경험이 제한되어 있으면 Microsoft 인증 파트너 문의하거나 Microsoft 자문 서비스 할 수 있습니다. 자세한 내용은 다음 Microsoft 웹 사이트를 방문하십시오.

Microsoft 파트너 - https://partner.microsoft.com/global/30000104 인증

Microsoft 권고 서비스 - http://support.microsoft.com/gp/advisoryservice

사용할 수 있는 지원 옵션 및 Microsoft 연락하는 방법에 대한 자세한 내용은 다음 Microsoft 웹 사이트를 방문하십시오: http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMSDUPS 패키지 단일 컴퓨터를 사용하거나 네트워크에 있는 모든 DLL이 DLL 기록을 추적하는 데 사용할 수 있습니다. 간단한 모드 종속성이 있는 Windows 2000 및 Windows 95 실행됩니다. DUPS 패키지를 세 C++ 유틸리티 및 몇 가지 Visual Basic 뷰어 구성됩니다.

DLL 비교할 경우 두 대의 컴퓨터에서 응용 프로그램을 사용하여 (컴퓨터 A와 컴퓨터 B) Dlister.exe 프로그램을 실행합니다. 기본적으로 Dlister Comp_DLL.txt Dlister 실행하는 컴퓨터의 이름을 보상 위치 이름의 C:\ 디렉터리에 파일을 만듭니다. 지정할 수도 있습니다 해당 Dlister 데이터베이스에 쓰거나 파일을 만든 다른 디렉터리를 지정할 수 있습니다.

두 가지 방법으로 Dlisters 특성은 기본값을 재정의할 수 있습니다. Dlister 및 Visual Basic 뷰어가 레지스트리 키를 가져오는:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\KB Samples\r1dllHell
및 다음 값:
ConnectionString, fileTableDir
Visual Basic 애플릿을 사용하여 이러한 값을 설정하거나 DllHell\C_clients\ATL4VB\VbregSetup Dlister 간단히 실행할 수 있으며 기본 값을 만듭니다. 예를 들어, ConnectString 설정하면 수 있습니다:
Provider=SQLOLEDB.1;Initial Catalog=dllHell;Data Source=dsc3_ts;
					
SQL Server에 값을 쓸 Dlister 인해 dllHell 데이터베이스 동안:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\dllHell.mdb
					
로컬 Access 데이터베이스를 사용합니다.

기본값을 재정의할 수 있는 두 번째 방법은 DllHell.ini Dlister.exe 디렉터리에 있는 파일의 특성을 설정하는 것입니다. 이러한 파일은 DllHell\C_clients\Dlister\Release\ 디렉터리로 압축을 푼 있습니다.

xdllHell.ini 라는 파일은 수정할 수 있는 연결 문자열 사용하여 샘플 포함되어 있습니다. 이를 사용하려면 이 dllHell.ini를 이름을 바꿉니다.

경우 컴퓨터 A와 컴퓨터 B 설치된 ADO (ActiveX 데이터 개체)를 모두 갖고 dllHell 데이터베이스를 채울 가장 간단한 방법은 SQL Server 또는 Jet 데이터베이스 연결 문자열을 설정하는 것입니다. 또는 Dlister 텍스트 파일 모드 실행 후 있습니다 C++ 유틸리티를 DllHell\C_clients\Dlister\readtxttbl\Release\DlgDtxt2DB.exe DllHell 데이터베이스로 출력 텍스트 파일을 읽습니다. 또한 ReadTxtTbl MFC 응용 프로그램 데이터 클라이언트가 전자 메일 텍스트 읽는 유용합니다. COM 서버를 등록해야 합니다 VBA 뷰어를 사용하도록 DUPS\C_clients\ATL4VB\r1RegMon\ReleaseMinDependency\r1RegMon.dll 및 DUPS\C_clients\ATL4VB\readDlls\R1readTxtMod\ReleaseMinDependency\R1readTxtMod.dll.

Windows 2000을 실행하는 시스템에 0x1로 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\KB Samples\r1dllHell ComputeCRC 레지스트리 키를 설정하여 CRC 체크섬을 사용할 수 있습니다. 이 키를 탐색합니다 일단 즐겨찾기에 추가할 수 있습니다. Windows NT 4 사용자가 이 키를 수동으로 탐색할 합니다.

DllHell 데이터베이스 만들기

SQL Server 7.0을 사용하는 것이 좋지만 Microsoft Access 2000 또한 작동합니다. DLLhell 데이터베이스를 만들려면 SQL Server 엔터프라이즈 관리자에서 DLLhell 라는 빈 데이터베이스를 만드는 데 사용할 수 있습니다. SQL Server 쿼리 분석기를 통해 창, 데이터베이스 드롭 다운 목록 상자에서 선택 DLLhell. 이 창에서 DllHell\SQL\dllHellSchema.sql 스크립트 실행 및 Dllhell에 대해 필요한 모든 테이블을 만듭니다.

또는 SQL Server 쿼리 분석기에서 다음 명령을 실행할 수 있습니다:
EXEC sp_attach_single_file_db 'DLLhell', 'DllHell\SQL\dllHell_Data.MDF'
				
해당 코드는 데이터베이스의 모든 테이블을 만듭니다.

두 시스템 DLL이 비교

비교할 두 시스템의 모든 DLL을 Dllhell\VBviewers\VBcmpList2 디렉터리 cmpWithList을 VBA 유틸리티를 사용합니다.

DLL 비교를 제한하려면 (대상 응용 프로그램이 로드될 일반적으로 경우에만 해당 DLL에) 비교할 DLL이 들어 있는 텍스트 (.txt) 파일의 수도 있어야 합니다. 종속 또는 다음 웹 사이트에서 여러 도구 (예: ListDLLs 및 Process Explorer) 중 하나를 사용하여 이 목록을 만들 수 있습니다.
http://technet.microsoft.com/en-us/sysinternals/default.aspx

cmpWithList 사용하여

cmpWithList 시작될 때 컴퓨터 목록 상자에 DLLhell 데이터베이스의 컴퓨터 목록을 표시합니다. 기본적으로 목록에서 처음 두 컴퓨터가 비교는 위해 선택됩니다. 대상 컴퓨터에 변경하려면 목록 상자에서 선택하고 변경 단추를 선택하십시오. Comp1 및 Comp2 어떤 컴퓨터가 비교됩니다 상자 표시를 편집합니다.

디렉터리 탐색 컨트롤을 사용하여 비교할 두 시스템에서 원하는 모든 DLL 이름이 포함된 텍스트 파일을 선택합니다. 텍스트 파일을 두 번 클릭하여 선택합니다.

DLL의 일부 비교할 표시하지 않으려면 표 행 (일반적으로 사용자가 DLL에 대한 winnt\system32\dllcache 및 WINNT\ $ NtServicePackUninstall $ 신경 수행할지 않습니다) 디렉터리를 두 번 클릭합니다. 디렉터리를 _skipDir 테이블에 추가할지 묻는 메시지가 나타납니다. DLL에 있는 _skipDir 비교에 간주되지 않습니다.

자동 네트워크 DLL을 설치하는 분석

설정, Windows 2000 시스템의 일정:

dllHell\rcomp.cmd 명령 파일을 사용하여 시작하십시오. 시스템 반영하도록 다음 환경 변수를 변경하십시오.
  1. Dpath: 여기서 Dlister 클라이언트에서 dll 텍스트 파일 목록을 만드는 클라이언트 디렉터리. 기본값은 C:\temp\DLLhell\ 입니다.
  2. COMP: 클라이언트 컴퓨터의 이름입니다.
  3. ChangeFileLocation: 여기서 DLL 파일 차이점 전체 네트워크 경로 복사되어야 합니다. 이 디렉터리입니다 있는 경우 HellsMonitor 조사식을 서비스.
  4. ServerLst: DLLhell 패키지의 C_clients 디렉터리에 위치한 네트워크 경로
작업 표시줄에서 시작 단추를 프로그램, 보조프로그램 을 차례로, 시스템 도구 를 차례로 클릭한 다음 예약된 작업 을 클릭하십시오.

예약 작업 추가 애플릿을 활성화하십시오. rcomp.cmd 파일을 포함하는 로컬 디렉터리를 찾아 선택하십시오. 마법사가 제공하는 옵션을 선택한 후 예약된 작업은 rcomp.cmd 파일이 추가됩니다. 설정을 테스트할 수 있도록, 예약된 작업을 설정할 처음을 2-5 분 나중에 시작 시간을 선택하십시오. 발생하는 모든 오류를 볼 수 있도록 pause 명령을 주석 처리를 위한 편리한 경우가 많습니다.

서비스 모니터링 파일 등록

해당 Dllhell\C_clients\HellsMonitor\ReleaseUMinDependency에서 서비스를 등록합니다 이 명령을 실행하여 디렉터리:
HellsMonitor /Service
				
모니터 클라이언트 있는 가장 중요한 부분입니다. 이 추가 또는 모니터링할 수 있는 디렉터리를 제거할 수 있도록 GUI 있습니다. 편리한 찾아보기 단추를 사용하여 실행되도록 응용 프로그램을 지정할 수 있습니다. 시스템 모니터링, DUPS Dllhell\C_clients\Dlister\ReadTxtTblCmdLine\Debug\ReadTxtTblCmdLine.exe 응용 프로그램이 있습니다.

모니터링할 디렉터리를 추가하려면 [추가]를 클릭하십시오. 디렉터리 찾아보기 대화 상자 위치를 디렉터리에 사용자가 탐색할 수 모니터링할 이 열립니다. 제거할 디렉터리나 디렉터리 제거 클릭한 다음 제거 를 원하는 디렉터리를 선택합니다. 두 형식 안에 또는 찾아보기 위해 실행할 수 있도록 응용 프로그램을 지정할 수 있습니다. 경로를 지정하지 않으면 시스템 경로에 어딘가에 있어야 합니다. 그런 다음, 변경이 감지되면 해당 응용 프로그램을 실행하려면 모니터를 설정하려면 설정 을 클릭하십시오.

참고: 어떤 현재 설정된 에서 실행되도록 응용 프로그램을 변경할 경우에만 설정 단추를 사용할 수 있습니다. 디렉터리를 제거하려면 선택되어 있으면 제거 단추를 사용할 수 있습니다.

참조

자세한 내용은 다음을 참조하십시오.
"The End of DLL Hell"

속성

기술 자료: 166112 - 마지막 검토: 2014년 2월 22일 토요일 - 수정: 4.6
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft ActiveX Data Objects 1.0?을(를) 다음과 함께 사용했을 때
    • Microsoft Visual C++ 4.2 Professional Edition
    • Microsoft Visual C++ 5.0 Standard Edition
    • Microsoft Visual C++ 6.0 서비스 팩 5
    • Microsoft Visual C++ 4.2 Enterprise Edition
    • Microsoft Visual C++ 5.0 Enterprise Edition
    • Microsoft Visual C++ 6.0 Enterprise Edition
    • Microsoft Visual C++ 4.2 Professional Edition
    • Microsoft Visual C++ 5.0 Professional Edition
    • Microsoft Visual C++ 6.0 Professional Edition
    • Microsoft Visual C++, 32-bit Learning Edition 6.0
  • Microsoft ActiveX Data Objects 2.0?을(를) 다음과 함께 사용했을 때
    • Microsoft Visual C++ 4.2 Professional Edition
    • Microsoft Visual C++ 5.0 Standard Edition
    • Microsoft Visual C++ 6.0 서비스 팩 5
    • Microsoft Visual C++ 4.2 Enterprise Edition
    • Microsoft Visual C++ 5.0 Enterprise Edition
    • Microsoft Visual C++ 6.0 Enterprise Edition
    • Microsoft Visual C++ 4.2 Professional Edition
    • Microsoft Visual C++ 5.0 Professional Edition
    • Microsoft Visual C++ 6.0 Professional Edition
    • Microsoft Visual C++, 32-bit Learning Edition 6.0
  • Microsoft ActiveX Data Objects 2.1?을(를) 다음과 함께 사용했을 때
    • Microsoft Visual C++ 4.2 Professional Edition
    • Microsoft Visual C++ 5.0 Standard Edition
    • Microsoft Visual C++ 6.0 서비스 팩 5
    • Microsoft Visual C++ 4.2 Enterprise Edition
    • Microsoft Visual C++ 5.0 Enterprise Edition
    • Microsoft Visual C++ 6.0 Enterprise Edition
    • Microsoft Visual C++ 4.2 Professional Edition
    • Microsoft Visual C++ 5.0 Professional Edition
    • Microsoft Visual C++ 6.0 Professional Edition
    • Microsoft Visual C++, 32-bit Learning Edition 6.0
  • Microsoft ActiveX Data Objects 2.5?을(를) 다음과 함께 사용했을 때
    • Microsoft Visual C++ 4.2 Professional Edition
    • Microsoft Visual C++ 5.0 Standard Edition
    • Microsoft Visual C++ 6.0 서비스 팩 5
    • Microsoft Visual C++ 4.2 Enterprise Edition
    • Microsoft Visual C++ 5.0 Enterprise Edition
    • Microsoft Visual C++ 6.0 Enterprise Edition
    • Microsoft Visual C++ 4.2 Professional Edition
    • Microsoft Visual C++ 5.0 Professional Edition
    • Microsoft Visual C++ 6.0 Professional Edition
    • Microsoft Visual C++, 32-bit Learning Edition 6.0
  • Microsoft ActiveX Data Objects 2.6?을(를) 다음과 함께 사용했을 때
    • Microsoft Visual C++ 4.2 Professional Edition
    • Microsoft Visual C++ 5.0 Standard Edition
    • Microsoft Visual C++ 6.0 서비스 팩 5
    • Microsoft Visual C++ 4.2 Enterprise Edition
    • Microsoft Visual C++ 5.0 Enterprise Edition
    • Microsoft Visual C++ 6.0 Enterprise Edition
    • Microsoft Visual C++ 4.2 Professional Edition
    • Microsoft Visual C++ 5.0 Professional Edition
    • Microsoft Visual C++ 6.0 Professional Edition
    • Microsoft Visual C++, 32-bit Learning Edition 6.0
  • Microsoft Data Access Components 2.1 서비스 팩 2
키워드:?
kbnosurvey kbarchive kbmt kbdownload kbdatabase kbprb kbprogramming KB166112 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