2

TLBIMP.EXEを使用して、商用のクローズドソースプログラムのラッパーを作成しました。(プログラムはVB6で参照できますが、Visual Studioで直接参照することはできません。)VSはラッパーを適切に参照し、オブジェクトを作成できます。ただし、オブジェクトのメソッドを呼び出すとすぐに、次のエラーでクラッシュします。

{"タイプ'InfoWorksLib.InfoWorksClass'のCOMオブジェクトをインターフェイスタイプ'InfoWorksLib.IIW'にキャストできません。IIDを持つインターフェイスのCOMコンポーネントに対するQueryInterface呼び出しが原因で、この操作は失敗しました' {61305DAA-3868-41AD-956D-081010E80E8B }'は、次のエラーのために失敗しました:そのようなインターフェイスはサポートされていません(HRESULTからの例外:0x80004002(E_NOINTERFACE))。 "}

私のコードは次のようになります:

void Function()
{
  InfoWorksLib.IIW iw = new InfoWorksLib.InfoWorksClass(); // Works
  iw.InitForTest(0, "", ""); // crashes with the above exception
}

宣言と作成の可能なすべての組み合わせを試しました(例InfoWorks iw = new InfoWorksClass()など)

VSのオブジェクトエクスプローラーは次のことを示しています。

InfoWorksLib
    InfoWorksLib
        EIWErrors
        IIW (interface)
        InfoWorks (interface)
            Base Types (folder)
                IIW (interface)
        InfoWorksClass
            Base Types (folder)
                IIW
                InfoWorks
                    IIW
                Object

これはWindows7の場合です。WindowsXP仮想マシンでは、同じコードが正常に機能します。

上記の例外を引き起こしている可能性のあるWindows7のセキュリティ問題はありますか?ラッパーアセンブリは、システム以外のディレクトリに配置する必要がありますか?

4

0 に答える 0