ADO と #import の使用時に EOF と PRB: 競合

文書翻訳 文書翻訳
文書番号: 166112 - 対象製品
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
すべて展開する | すべて折りたたむ

目次

現象

#import では、データベース API の ActiveX データ オブジェクト (ADO) などの Windows アプリケーション内でのタイプ ライブラリをカプセル化するクラスを生成できます。 例:
   // 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: 予期しない token(s) 前 ';'
DLL の汎用エラー ソルバー ツール (DUPS.exe)、2000年 1 月記載すべてのユーティリティを含む例を示しますマイクロソフト開発者向けネットワーク (MSDN) ニュース アーティクル「、終了 DLL ヘルの:」 MSDN を参照してくださいこの資料を読む前に資料。

DUPS パッケージは、Windows ベースの複数のコンピュータ上の DLL のバージョンを追跡および比較できるユーティリティのセットです。 最大数は、SQL Server または Access のインストールに従います。 システム上で DLL を列挙する Dlister クライアントは、Windows 95 や Windows 98、Windows NT 4. 0 の場合は、Windows 2000 が実行します。 表示ユーティリティは、Windows NT 4. 0 および Windows 2000 の場合は、開発されたされ、Access または Microsoft SQL Server のいずれかが必要があります。 これは、Microsoft Access 97 とそれ以降のバージョンと SQL Server 6. 5 およびそれ以降のバージョンでテストされました。

原因

Stdio.h、Ios.h または Streamb.h (Afxwin.h を含む) を使用するアプリケーション] 内で EOF が既に定義されて定数 (-1) としています。 [、#import は ADO のレコードセットまたは RDO の EOF プロパティを定義しようの結果セットのオブジェクト、し、ADO 1. 0 を使用している場合、msado15.tlh (または msado10.tlh) で生成されたコードの次の行に、C2629 と C2238 のエラーを生成ファイル:
VARIANT_BOOL EOF;
				
この行は、変数を定義しようが EOF はすでにそのとして定義 -1 です。 次のコード行を解析、結果として:
short -1;
				
これはコンパイルされません -1 が有効な変数名でないためです。

解決方法

この問題を修正するには、ことができます属性を使用する名前の変更 #import のよう:
   #import <msado15.dll>
    rename( "EOF", "A_EOF" )
				
名前の変更を新しい値に指定されたタイプ ライブラリで #import を検索する"EOF"文字列の名前を変更します。

別の修正プログラムが続く ADO をインポートする前に EOF を未定義に:
#undef EOF
#import <msado15.dll> rename_namespace("ADO20")
				

状況

これは仕様によるものです。

詳細

下記のファイルは、Microsoft Download Center からダウンロードできます:

DUPS.exe
リリース日: 2000 年 1 月 1 日月 14

マイクロソフトのサポート ファイルをダウンロードする方法の追加についてはをクリックして以下「サポート技術情報」(Microsoft Knowledge Base) 資料を参照。
119591Q119591 How to Obtain Microsoft Support Files from Online Services
マイクロソフトはこのファイルのウイルスをスキャンします。 マイクロソフトでは、アップロード時点の最新のウイルス検査プログラムを使用しています。 ファイルは、ファイルに不正な変更を防止するセキュリティが強化されたサーバーに格納されます。 この資料とその付属のコードは定期的に更新されます。 すべてのコメントは、ようこそありの将来の更新プログラムと見なされます。 (使用送信 hotlink 右側のフレーム内のコメント)。
マイクロソフトは提供プログラミング言語の使用方法の一例としてのみ、姿表現または明示、黙示、黙示または商品性および特定目的に対する適合性に限らずなどです。 この資料は、例示されているプログラミング言語やプロシージャの作成およびデバッグに使用するツールについて理解されているユーザーを対象としています。 Microsoft Support 担当者は、特定のプロシージャの機能についての問い合わせにはお答えできますが、ユーザー固有の目的に合わせた機能の追加、プロシージャの作成などの内容変更は行っておりません。
プログラミング経験がいない場合、マイクロソフト アドバイザリー サービスのマイクロソフト認定パートナーを連絡することがあります。 詳細については、これらのマイクロソフト Web サイトを参照してください。

マイクロソフト認定パートナー - https://partner.microsoft.com/global/30000104

Microsoft のアドバイザリ サービス - http://support.microsoft.com/gp/advisoryservice

使用可能なサポート オプションおよびマイクロソフトに連絡する方法についての詳細については、次のマイクロソフト Web サイトを参照してください: http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMSDUPS パッケージは、単一コンピューターで使用したり、ネットワーク上のすべての DLL の DLL の履歴を追跡する使用したりできます。 Windows 95 および [Windows 2000 にでその最も簡単なモードでは依存関係がない実行します。 DUPS パッケージは、3 つの C++ ユーティリティといくつかの Visual Basic ビューアーから成ります。

アプリケーションが 2 つのコンピューターを使用してだけ、DLL を比較する場合 (コンピューター A とコンピューター B)、Dlister.exe プログラムを実行します。 既定では Dlister ファイルを名前 Comp_DLL.txt コンピューターは Dlister を実行しているコンピューターの名前を持つ C:\ ディレクトリに作成します。 指定することもできますが Dlister をデータベースに書き込むか、ファイルを作成する別のディレクトリに指定します。

Dlisters 属性の既定値をオーバーライドする方法を 2 つがあります。 Dlister と、Visual Basic の閲覧者はこのレジストリ キーを取得します。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\KB Samples\r1dllHell
次の値:
その、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
					
ローカル Microsoft Access データベースを使用します。

2 番目方法は、既定値をオーバーライドする方法です DllHell.ini、Dlister.exe ディレクトリ内のファイル属性を設定します。 これらのファイルは DllHell\C_clients\Dlister\Release\ ディレクトリに展開です。

接続文字列を変更するには、サンプルには xdllHell.ini という名前のファイルが含まれます。 名前を (変更この dllHell.ini を使用する場合。

場合コンピューター A とコンピューター B の両方が ActiveX データ オブジェクト (ADO) をインストールすると、dllHell データベースを作成する最も簡単なアプローチは、SQL Server または Jet データベースに接続文字列を設定します。 また、テキスト ファイルのモードで Dlister を実行し、できます C++ ユーティリティを使用して DllHell\C_clients\Dlister\readtxttbl\Release\DlgDtxt2DB.exe に DllHell データベース出力テキスト ファイルを読み込みます。 ReadTxtTbl の MFC アプリケーションもデータ クライアント電子メールをテキスト内での読み取りに適しています。 COM サーバーの登録する必要がある DUPS\C_clients\ATL4VB\r1RegMon\ReleaseMinDependency\r1RegMon.dll と DUPS\C_clients\ATL4VB\readDlls\R1readTxtMod\ReleaseMinDependency\R1readTxtMod.dll、Visual Basic のビューアーを使用します。

CRC チェックサムを有効に"0x1"を Windows 2000 を実行しているシステムで、レジストリ キー HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\KB Samples\r1dllHell ComputeCRC を設定できます。 このキーに移動すると、お気に入りに追加することができます。 Windows NT 4 ユーザーはこのキーに手動で移動する必要があります。

DllHell データベースの作成

SQL Server 7. 0 は、お勧めが Microsoft Access 2000 も機能します。 DLLhell データベースを作成するには、DLLhell という名前の空のデータベースを作成するのに SQL Server Enterprise Manager を使用できます。 SQL Server クエリ アナライザーからウィンドウで、リストボックス アップダウン データベースから選択 DLLhell。 このウィンドウで、DllHell\SQL\dllHellSchema.sql スクリプトを実行し、Dllhell のために必要なすべてのテーブルを作成します。

SQL Server クエリ アナライザーで次コマンドを実行できる代わりに、:
EXEC sp_attach_single_file_db 'DLLhell', 'DllHell\SQL\dllHell_Data.MDF'
				
コードは、データベースとすべてのテーブルを作成します。

2 つのシステム上の DLL を比較します。

比較するには、2 つのシステム上のすべての DLL は、Dllhell\VBviewers\VBcmpList2 ディレクトリに、cmpWithList ユーティリティの Visual Basic を使います。

DLL の比較を制限する (通常のみ DLL のこれらのターゲット アプリケーションの読み込み) にも必要と比較する DLL を含むテキスト (.txt) ファイル。 このリストまたは (ListDLLs や Process Explorer) などのいくつかのツール、次の Web サイトからのいずれかの依存先に作成できます。
http://technet.microsoft.com/en-us/sysinternals/default.aspx

cmpWithList を使用します。

cmpWithList の起動時にコンピューターの一覧に DLLhell データベースで、コンピューターのリスト ボックスで表示します。 既定では、一覧内の最初の 2 つのコンピューターは比較のため選択されます。 ターゲット コンピューターを変更し、リスト ボックスで選択し、[ 変更 ] </a0> ボタンを選択します。 Comp2 と Comp1 ボックスの表示は、比較するどのコンピューターを編集します。

ディレクトリのナビゲーション コントロールは、2 つのシステムで比較するすべての 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 分、将来をオンに初めて、スケジュールされたジョブを設定します。 発生したエラーが表示されるので、一時停止コマンド コメントを解除すると便利だことがよくあります。

サービスを監視するファイルを登録します。

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 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?を以下の環境でお使いの場合
    • 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?を以下の環境でお使いの場合
    • 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?を以下の環境でお使いの場合
    • 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?を以下の環境でお使いの場合
    • 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
キーワード:?
kbnosurvey kbarchive kbdownload kbdatabase kbprogramming kbprb kbmt KB166112 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:166112
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

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