PRB: Konflikt s #import EOF při použití s ADO

Překlady článku Překlady článku
ID článku: 166112 - Produkty, které se vztahují k tomuto článku.
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Příznaky

S #import je možné generovat tříd zapouzdřit typelib databáze API, například ActiveX Data Objects (ADO) v rámci aplikace systému windows. Například:
   // Excerpt from Stdafx.h
   #include <afxwin.h>           // MFC core and standard components.
   ...
   #import <msado15.dll>        //for ADO 1.0, import "msado10.dll"
 
				
při způsobem z #import pro ADO na vlastnost Recordset.EOF se může zobrazit následující chyby:
Chyba C2629: Neočekávaný ' krátký ('
Chyba C2238: Neočekávaný tokeny předchozí ';'
Nástroj Řešitel Universal potíže DLL (DUPS.exe) je vzorek, který obsahuje všechny nástroje dokumentovány v lednu 2000 článku příspěvky Microsoft Developer Network (MSDN) "konec DLL Hell." Zkontrolujte, že MSDN článku před přečtením tohoto článku.

Balíček DUPS je sada nástrojů, které můžete použít ke sledování a porovnat verze DLL ve více počítačích se systémem Windows. Maximální počet je řízen instalace SQL Server nebo Microsoft Access. Dlister klienta, který vytvoří výčet dll v systému spuštěna na Windows 95 nebo Windows 98, Windows NT 4.0 a Windows 2000. Zobrazení nástroje byly vyvinuty v systému Windows NT 4.0 a Windows 2000 a vyžadují Microsoft Access nebo Microsoft SQL Server. Byla testována se aplikace Microsoft Access 97 a novější a SQL Server 6.5 a novější verze.

Příčina

EOF již byl v rámci aplikace, která používá Stdio.h Ios.h nebo Streamb.h Afxwin.h (včetně), definován jako konstanta (-1). #Import se pak pokusí definovat vlastnost EOF pro jeho ADO Recordset nebo objekty RDO komponenty Resultset objekty uživatele a generuje chyby C2629/C2238 na následující řádek generovaný kód v msado15.tlh (nebo msado10.tlh) Pokud ADO 1.0 je používán soubor:
VARIANT_BOOL EOF;
				
tento řádek se pokouší definovat proměnné, ale EOF již definován jej jako hodnotu -1. V důsledku toho k analyzuje tento řádek kódu:
short -1;
				
není to kompilaci protože hodnota -1 není platný název proměnné.

Řešení

Chcete-li tento problém odstranit, můžete atribut přejmenování #import způsobem:
   #import <msado15.dll>
    rename( "EOF", "A_EOF" )
				
přejmenovat změní název jakýkoli řetězec "EOF", který vyhledá #import v zadané typelib novou hodnotu.

Jiné oprava je nedefinovaný EOF před importem ADO následuje:
#undef EOF
#import <msado15.dll> rename_namespace("ADO20")
				

Prohlášení

Toto chování je záměrné.

Další informace

Na webu služby Stažení softwaru je k dispozici ke stažení následující soubor:

DUPS.exe
Datum vydání: Jan-14-2000

Další informace o tom, jak stahovat soubory podpory společnosti Microsoft, naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
119591Jak získat soubory podpory společnosti Microsoft ze serverů služeb online
Microsoft tento soubor zkontroloval na výskyt virů. Společnost Microsoft použila aktuální antivirový software, který byl k dispozici v den uveřejnění tohoto článku. Soubor je uložený na zabezpečených serverech neumožňujících neoprávněné změny souborů. Tento článek a jeho doprovodné kód budou aktualizovány pravidelně. Všechny komentáře jsou Vítá a budou považovány za v budoucích aktualizací. (Použít hotlink odeslání v pravém rámečku pro komentářů).
Ukázky programů jsou společností Microsoft poskytovány pouze pro ilustraci bez žádné záruky výslovně uvedené ani předpokládané, včetně předpokládaných záruk vztahujících se k obchodovatelnosti nebo vhodnosti pro určitý účel. Tento článek předpokládá, že uživatel je obeznámen s programovacím jazykem, který je předmětem ukázky, a s nástroji použitými pro vytvoření a ladění skriptu. Pracovníci technické podpory společnosti Microsoft mohou vysvětlit funkce určitého postupu, nemohou však následující příklady rozšířit o další funkce nebo konstrukce podle konkrétních požadavků uživatele.
Pokud máte zkušenosti s programováním omezený, můžete kontaktovat partnera s certifikátem Microsoft nebo služby Advisory. Na další informace těchto webech společnosti Microsoft:

Microsoft Certified Partner - https://partner.microsoft.com/global/30000104

Služba Microsoft zpravodaje - http://support.microsoft.com/gp/advisoryservice

Další informace o možnostech podpory, které jsou k dispozici a o možnostech kontaktování společnosti Microsoft na následujícím webu společnosti Microsoft: http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMSDUPS balíček může být použit v jednom počítači nebo slouží ke sledování historie DLL každých DLL v síti. Spustí v systému Windows 95, Windows 2000 a v jeho nejjednodušší režimu nemá žádné závislosti. DUPS balíček obsahuje tři nástroje C++ a několik jazyka prohlížeče.

Pokud pouze chcete porovnat DLL aplikace pomocí na dva počítače (počítače A a počítač B), spustit program Dlister.exe. Ve výchozím nastavení vytvoří Dlister soubor v adresáři C:\ s názvem Comp_DLL.txt kde úhrady je název počítače se systémem Dlister. Můžete také určit, že Dlister zápisu do databáze nebo můžete zadat jiný adresář, ve kterém se soubor vytvořen.

Potlačení výchozích hodnot atributu Dlisters dvěma způsoby. Dlister a jazyka prohlížeče získat tento klíč registru:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\KB Samples\r1dllHell
A následující hodnoty:
ConnectionString, fileTableDir
Použijte aplet jazyka DllHell\C_clients\ATL4VB\VbregSetup nastavit tyto hodnoty nebo jednoduše spustit Dlister a vytvoří výchozí hodnoty. Například nastavení ConnectString na:
Provider=SQLOLEDB.1;Initial Catalog=dllHell;Data Source=dsc3_ts;
					
způsobí Dlister zápisu hodnot k serveru SQL databáze dllHell při:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\dllHell.mdb
					
používá místní databázi Microsoft Access.

Druhý způsob přepsat výchozí hodnoty je nastavení atributů v souboru DllHell.ini v adresáři Dlister.exe. Tyto soubory jsou dekomprimovány do adresáře DllHell\C_clients\Dlister\Release\.

Soubor s názvem xdllHell.ini je součástí ukázkové řetězcem připojení, které lze změnit. (Přejmenovat tento dllHell.ini Chcete-li jej použít.)

Pokud počítač A a počítač B obou nainstalován ActiveX Data Objects (ADO), nejjednodušší postup naplnit dllHell databáze je nastavit připojovací řetězec databáze SQL Server nebo Jet. Můžete také spustit v režimu textu souboru Dlister pak použijte nástroj C++ DllHell\C_clients\Dlister\readtxttbl\Release\DlgDtxt2DB.exe číst výstup textového souboru do databáze DllHell. Aplikace MFC ReadTxtTbl je také užitečné pro čtení v textu e-mailové klienty data zprávy. Zaregistrujte servery COM DUPS\C_clients\ATL4VB\r1RegMon\ReleaseMinDependency\r1RegMon.dll a DUPS\C_clients\ATL4VB\readDlls\R1readTxtMod\ReleaseMinDependency\R1readTxtMod.dll použití jazyka prohlížeče.

Kontrolní součet CRC můžete povolit nastavením klíče registru HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\KB Samples\r1dllHell ComputeCRC 0x1 na systémy se systémem Windows 2000. Jakmile opustíte tento klíč, můžete je přidat k oblíbeným. Windows NT 4 uživatelé musí ručně přecházet k tomuto klíči.

Vytvoření databáze DllHell

SQL Server 7.0 je doporučeno, ale také pracuje Microsoft Access 2000. Vytvoření databáze DLLhell můžete SQL Server Enterprise Manager vytvořit prázdnou databázi s názvem DLLhell. Ze serveru SQL Query Analyzer okno DLLhell vyberte z rozevíracího databáze - dolů v seznamu. Spuštění skriptu DllHell\SQL\dllHellSchema.sql v tomto okně a vytvoří všechny tabulky potřebné pro Dllhell.

Případně můžete spustit následující příkaz v SQL Server Query Analyzer:
EXEC sp_attach_single_file_db 'DLLhell', 'DllHell\SQL\dllHell_Data.MDF'
				
kód vytvoří databázi a všechny tabulky.

Porovnání dll v systémech Two

K porovnání použijte dll na dva systémy cmpWithList nástroj jazyka v adresáři Dllhell\VBviewers\VBcmpList2.

Omezit DLL porovnání (obvykle na pouze ty dll cílové aplikace načte) musíte mít také (TXT) textový soubor obsahující dll, které chcete porovnat. Tento seznam můžete vytvořit s Depends nebo jeden z několika nástrojů (například ListDLLs a Process Explorer) z následujícího webu:
http://technet.microsoft.com/en-us/sysinternals/default.aspx

Pomocí cmpWithList

Při spuštění cmpWithList zobrazuje seznam počítačů v DLLhell databázi v seznamu počítačů. První dva počítače v seznamu jsou ve výchozím nastavení zaškrtnuto pro porovnání. Změnit cílový počítač v seznam vyberte a potom vyberte tlačítko změnit. Comp1 a Comp2 úpravy polí zobrazit porovná které počítače.

Pomocí ovládacího prvku navigace adresář vyberte textový soubor obsahující názvy dll chcete porovnat dvě systémech. Dvojité klepnutí na textový soubor jej vybere.

Pokud nechcete porovnat dll v některých adresářů (obvykle je není nakonfigurováno o dll v winnt\system32\dllcache a WINNT\ $ NtServicePackUninstall $) na řádku v mřížce poklepejte. Budete vyzváni k přidání adresáře tabulky _skipDir. DLL _skipDir nejsou považovány za pro porovnání.

Instalace sítě automatické DLL auditování

Nastavení si plán v systémech Windows 2000:

Spustit s příkazového souboru dllHell\rcomp.cmd. Změňte následující proměnné prostředí, aby odrážel systému:
  1. Dpath: Adresář na klienta Dlister vytvoří textový soubor seznam knihoven DLL v počítači klienta. Výchozí nastavení je C:\temp\DLLhell\
  2. COMP: Název počítače klienta.
  3. ChangeFileLocation: Má být zkopírován úplná síťová cesta kde rozdíly soubor DLL. Je to adresář, který HellsMonitor kukátek služby.
  4. ServerLst: Síťová cesta adresáře C_clients balíček DLLhell, která je umístěna.
Na hlavním panelu klepněte na tlačítko Start, přejděte na příkaz programy, přejděte na položku Příslušenství, přejděte na položku Systémové nástroje a klepněte na příkaz Naplánované úlohy.

Aktivovat apletu Naplánovanou úlohou. Místní adresář obsahující soubor rcomp.cmd vyhledejte a vyberte jej. Po výběru možnosti průvodce předloží souboru rcomp.cmd do naplánované úlohy. Při prvním nastavení naplánované úlohy vyberte počáteční čas v budoucnosti 2 5 minut, aby test nastavení. Často je vhodné vložte příkazu pause, takže můžete zobrazit chyby, ke kterým dochází.

Zaregistrovat soubor sledování Service

Z Dllhell\C_clients\HellsMonitor\ReleaseUMinDependency adresáře tento příkaz zaregistruje službu spustit:
HellsMonitor /Service
				
nejdůležitější součástí je monitor klienta. Toto je GUI umožňuje přidat nebo odebrat adresáře, které chcete sledovat. Také umožňuje určit spuštění (pomocí tlačítka Procházet užitečný) aplikace. DUPS Sledování systému je aplikace Dllhell\C_clients\Dlister\ReadTxtTblCmdLine\Debug\ReadTxtTblCmdLine.exe.

Přidat adresář pro sledování, klepněte na tlačítko Přidat. Tento otevře dialogové okno Procházet adresář kde můžete procházet do adresáře, který chcete sledovat. Chcete-li odebrat adresář nebo adresáře vyberte adresáře, který chcete odebrat a potom klepněte na tlačítko Odebrat. Chcete-li určit aplikace spustit buď typ v nebo vyhledejte jej. Pokud zadáte cestu má být v systémové cestě někam. Další klepněte na tlačítko nastavit monitor spustit aplikace při zjištěna změna Nastavení.

Poznámka: tlačítko sady je povoleno pouze při změně aplikaci spustit z Co je aktuálně nastavena. Odebrat tlačítko je povoleno pouze pokud jste vybrali odebrat adresářů.

Odkazy

Další informace naleznete v následujících tématech:
"The End of DLL Hell"

Vlastnosti

ID článku: 166112 - Poslední aktualizace: 1. března 2014 - Revize: 4.6
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft ActiveX Data Objects 1.0 na těchto platformách
    • Microsoft Visual C++ 4.2 Professional Edition
    • Microsoft Visual C++ 5.0 Standard Edition
    • Microsoft Visual C++ 6.0 Service Pack 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 na těchto platformách
    • Microsoft Visual C++ 4.2 Professional Edition
    • Microsoft Visual C++ 5.0 Standard Edition
    • Microsoft Visual C++ 6.0 Service Pack 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 na těchto platformách
    • Microsoft Visual C++ 4.2 Professional Edition
    • Microsoft Visual C++ 5.0 Standard Edition
    • Microsoft Visual C++ 6.0 Service Pack 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 na těchto platformách
    • Microsoft Visual C++ 4.2 Professional Edition
    • Microsoft Visual C++ 5.0 Standard Edition
    • Microsoft Visual C++ 6.0 Service Pack 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 na těchto platformách
    • Microsoft Visual C++ 4.2 Professional Edition
    • Microsoft Visual C++ 5.0 Standard Edition
    • Microsoft Visual C++ 6.0 Service Pack 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 Service Pack 2
Klíčová slova: 
kbnosurvey kbarchive kbmt kbdownload kbdatabase kbprb kbprogramming KB166112 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:166112

Dejte nám zpětnou vazbu

 

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