文書番号: 154126 - 最終更新日: 2011年7月4日 - リビジョン: 5.0 いずれかが発生する可能性がありますまたは Visual C では、レギュラー DLL から拡張 DLL を使用するとより多くの関連問題
目次現象レギュラー DLL から拡張 DLL を使用すると、いずれかが発生する可能性がありますか複数の関連の問題MFC データベースのため、OLE には、およびソケット サポート Dll 実装拡張 Dll には、表示される可能性がありますされて表示されていない場合でも、これらの MFC 機能を使用している場合は、同様の問題明示的に独自の拡張 Dll のいずれかを使用します。症状は次のとおりです。
原因拡張 DLL を CDynLinkLibrary オブジェクトのチェーンにケーブル接続されていません通常の DLL の。 解決方法作成し、初期化関数は、拡張 DLL のエクスポートは、CDynLinkLibrary オブジェクトを作成します。ちょうどこの初期化関数を呼び出す1 回各レギュラー DLL からは、拡張 DLL を使用します。例についてはこの、「以下のサンプル コードのセクション。 どの MFC OLE、MFC データベース (DAO) を使用している場合、または MFC ソケットのサポートレギュラー DLL には定義済みの初期化関数を呼び出す必要があります。各 MFCO4xD.DLL、MFCD4xD.DLL、および MFCN4xD.DLL を使用しています。これらは自動的に MFC OLE、MFC データベースを使用するとリンクする Dllまたは、それぞれ MFC ソケットでサポートします。たとえば、MFC OLE では、アプリケーションまたは DLL では、そのアプリケーションまたは DLL は、MFCO4xD.DLL を使用します。参照してください、詳細については項に参照します。 AfxDbInitModule() への呼び出しをレギュラー DLL へのデータベースのサポートについてを追加します。CWinApp::InitInstance 関数です。この呼び出しは底に発生を確認します。クラスの呼び出しまたは、MFCD4xD.DLL にアクセスするコードを追加します。この関数パラメーターをとらないし、void を返します。 OLE のサポートについてを AfxOleInitModule() への呼び出しをレギュラー DLL への追加します。CWinApp::InitInstance。なお、COleControlModule InitInstance()関数の呼び出し AfxOleInitModule() が、ため、OLE を作成します。制御および COleControlModule を使用しているへの呼び出しを追加しないでくださいAfxOleInitModule()。 ソケットのサポートについては、通常に AfxNetInitModule() への呼び出しを追加します。DLL の CWinApp::InitInstance。 リリースの MFC Dll をビルドし、独立したアプリケーションを使用しないでください注意してください。データベース、ソケット、または OLE のサポート用 Dll です。これらを呼び出しても安全です。初期化はリリース モードでは、ただし機能します。 状況この動作は仕様です。 詳細それぞれの「現象」に、MFC で述べた中必要な値またはオブジェクトを検索する必要があります。たとえば、デ ・中MFC のシリアル化、必要があるすべてが現在利用可能なを検索するのには実行時にクラスのアーカイブには、適切なランタイム オブジェクトします。クラスです。 これらの検索の一部として、すべての拡張 Dll で MFC をスキャンします。CDynLinkLibrary オブジェクトのチェーンをウォークして使用します。CDynLinkLibrary オブジェクト中にコンス トラクターにチェーンを自動的にアタッチし、によって作成されます。各拡張 DLL の初期化中にします。さらに、すべてのモジュール(EXE またはレギュラー DLL) には独自の CDynLinkLibrary オブジェクト チェーンがあります。その他単語が異なるアプリケーションで使用する拡張 Dll のチェーン通常とは異なる DLL で使用する拡張 Dll のチェーン別の標準 DLL で使用する拡張 Dll のチェーン。 この最後の点は、前述の最も一般的な原因の 1 つです。「現象」に記載されている問題があります。ためには、拡張 DLLCDynLinkLibrary チェーンにワイヤード (有線) を取得するのには、CDynLinkLibrary を作成する必要があります。拡張 DLL を使用するすべてのモジュールのコンテキスト内のオブジェクト。拡張 DLL がレギュラー Dll から使用する場合など、作成するエクスポート初期化関数を提供する必要があります、CDynLinkLibrary オブジェクトです。拡張 DLL を使用する各レギュラー DLL する必要があります。エクスポート初期化関数を呼び出します。 拡張 DLL は MFC アプリケーション (EXE) を使用する場合レギュラー DLL からは、それを作成するための十分な拡張 DLL の DllMain の CDynLinkLibrary オブジェクトです。これは、AppWizard の拡張 DLL のコードを実行します。拡張 DLL の読み込み時暗黙的に、DllMain が読み込まれ、アプリケーションが開始する前に実行されます。チェーンの作成に既定のワイヤード (有線) は、CDynLinkLibrary は MFCDLL は、MFC アプリケーションを留保します。これを呼び出すことができなくなります、アプリケーションの初期化関数です。それにもかかわらず、その方が安全ですと他のすべてのアプリケーションが、初期化関数を使用することをお勧めして拡張 DLL は、CDynLinkLibrary オブジェクト DllMain で作成します。メモ複数の CDynLinkLibrary オブジェクトをすることをお勧めではないです。1 つの拡張 DLL の拡張 DLL は、特にある場合、1 つのチェーンメモリからアンロード動的にします。初期化関数を呼び出しません。複数回、1 つのモジュールから。 AfxDbInitModule は、AfxOleInitModule を実装し、AfxNetInitModule 関数では、DLLDB にあります。CPP を DLLOLE。CPP は、DLLNET。CPP ファイルをそれぞれ、\MsDev\Mfc\Src ディレクトリで。 サンプル コードこれらの行は、拡張 DLL のソースの必要があります。 関連情報レギュラー Dll の詳細については、「MFC テクニカル ノート 11 を参照してください。 拡張 Dll の詳細については、MFC のテクニカル ノート 33 を参照してください。 拡張 DLL でエクスポートされた初期化の例については、DLLHUSK サンプルでは、Visual の C++ CD-ROM の表示機能を
Samples
MFC Samples
Advanced MFC Samples
DLLINIT.CPP Extension DLL code
DLLMODUL.CPP Regular DLL code
DLLDB.CPP MFC Database Debug DLL (MFCD) code
DLLOLE.CPP MFC OLE Debug DLL (MFCO) code
DLLNET.CPP MFC Sockets Debug DLL (MFCN) code
140850?
(http://support.microsoft.com/kb/140850/EN-US/
)
[Howto]: DLLTRACE は共有ライブラリで MFC を使用するのに変換します。 150121? (http://support.microsoft.com/kb/150121/EN-US/ ) PRB: MFC 荷重間違ったリソースの拡張 DLL 131946? (http://support.microsoft.com/kb/131946/EN-US/ ) PRB: が正しくありませんポインター RUNTIME_CLASS から _AFXDLL からクラス 147315? (http://support.microsoft.com/kb/147315/EN-US/ ) BUG: 配布リストの拡張機能をアンロードするとアクセス違反が発生 この資料は以下の製品について記述したものです。
機械翻訳重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。 英語版 KB:154126?
(http://support.microsoft.com/kb/154126/en-us/
)
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。" | サポート情報 その他のサポートサイトコミュニティサポート技術情報の翻訳 |






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


先頭へ戻る