2

背景: ベンダーは ActiveX DLL を提供してくれましたが、ヘッダー ファイルや .tlb ファイルなどはありません。Visual Stdio 2010 と win32 C++ を使用しています。

私が直面している問題は、dll をロードまたは参照する方法ですか?

アンマネージド プロジェクトであるため、ソリューション エクスプローラーから dll を参照できません。#import を使用しようとすると、XXX.tlb ファイルが見つからないというコンパイル エラーが発生します。しかし、.tlb タイプのファイルがありません。私が試したもう 1 つのオプションは、OLE ビューアーで dll を開き、dll 定義をコピーしてから、Visual Studio で作成した .idl 拡張子ファイルに貼り付けることでした。次に、idl ファイルで midl を実行して .h ファイルを作成しましたが、それも役に立ちませんでした。クラスを使用しようとすると、「抽象クラスを使用または参照できません」というエラーが表示されます。

この問題について他にも質問がありますが、簡単ではなく、回答は回答済みまたは賛成としてマークされていません。

Visual Studio 2010 の win32 C++ プロジェクトで ActiveX dll をロードするために使用できるさまざまな方法と、どの方法をいつ優先すべきかを知りたいですか? 実際に私の問題に対処しているスレッドがある場合は、そのスレッドを教えてください。

ありがとう

4

2 に答える 2

4

OLEビューを使用してインターフェイス定義を表示できる場合は、タイプライブラリがdllリソースに埋め込まれていることを意味します。したがって、使用する場合#import "YourActiveX.dll"は機能するはずです。

于 2012-06-03T06:06:53.990 に答える
0

あなたが必要

  1. regsvr32 を使用して Windows に COM (Active X) コンポーネントを登録します。regsvr32 my_dll.dll
  2. 次に、COM を使用してコンポーネントと対話します。これは良いチュートリアルです。
于 2012-06-02T23:16:38.083 に答える