[ad_1]
やあ、
C# を使用して .net フレームワークで COM Dll にアクセスしようとしていますが、COM クラスのオブジェクトを初期化できません。必要なすべての dll は VC++ で正常にビルドされていますが、C# でアクセスしているときに、次のようなエラーがスローされます。
「次のエラーのため、CLSID {4F3843A4-048B-11D4-93D8-0050BAD440B8} のコンポーネントの COM クラス ファクトリを取得できませんでした: 800401f0.」
Google からも何の助けも得られません。 よろしく。
感謝と敬意
クシュ・シャルマ
解決策 1
こんにちは、
エラー コード (800401f0) は、CoInitialize または CoCreateInstance エラーを示しているようです。これは、COM DLL が正しく登録されていないことに関連している可能性があります。
DLL でオプション “-r” を指定して “rgsvc” を実行してから、C# アプリを実行してください。
解決策 2
ありがとうフレッド。 Regsvr32 または grsvc を確認し、登録方法の例をいくつか教えてください。 これについてあなたの助けに本当に感謝します。
解決策 3
ありがとうフレッド。
試してみましたが、dll が読み込まれたためエラーが発生しましたが、エントリ ポイント DllInstall が見つかりませんでした。
有効なdllまたはOCXファイルであることを確認してください。このCOM dllをビルドし、エラーなしでVC ++プロジェクトをビルドしました。
今すぐ助けてください。
解決策 4
その場合、あなたの問題はそこから生じています。
DLL に DLLInstall エントリ ポイントがない場合 (必須ではありません)、C# アプリケーションから直接参照することはできません。
C# アプリケーションから COM DLL とやり取りするには、P/Invoke メカニズムを使用する必要があります。
[System.Runtime.InteropServices.DllImport("yourComLib.dll")] static extern void SomeMethod(....);
使用する COM メソッドごとに、C# アプリケーションで外部静的メソッドを定義する必要があります。 ただし、COM DLL を参照できるようにする場合は、DLLInstall および DLLUninstall メソッドがあることを確認する必要があります。
解決策 5
ありがとう、フレッド
しかし、これ以上処理できないので、いくつかの例で説明していただけますか。
以下は私のDLLです
[System.Runtime.InteropServices.DllImport(“ExactaUtil.dll”)]
現在、私はこのように使用しています:
保護された EXACTAUTILLib.IUtilObj m_objUtil;
// Util クラスのインスタンスを作成します。
m_objUtil = 新しい EXACTAUTILLib.UtilObjClass();
[ad_2]
コメント