0

さまざまなデバイスから情報を受信できるようにする.dllとやり取りしようとしています(具体的にはEye Gaze)。.dll は ETUDriver と呼ばれ、http: //www.sis.uta.fi/~csolsp/projects.php にありますが、.h ファイルは付属していません。

.dll から関数を実際にロード、対話、および呼び出すのに苦労しています。マニュアルが提供されていますが、実際にコードを設定して開始することに関しては、まったく役に立ちません。付属の 3 つのサンプル アプリ (ソース コード付き) がありますが、動作するのは 2 つだけで、そのうちの 1 つが C# であるため、役に立ちません。ただし、機能するものはMFC経由で.dllをロードしますが、これは私のコードでは実行可能なオプションではありません(これは他の多くのプロジェクトで使用することを意図しているため、MFCや標準ではない他のライブラリを強制することはできませんプロジェクトへ)。

基本的に、.dll 内には、コード内で作成し、そのクラスの関連関数を呼び出す必要がある一連のクラスがあります。

使用しようとしましたHRESULT hr = CoInitialize(NULL); hr = CoCreateInstance(__uuidof(ETUDSink), NULL, CLSCTX_INPROC, __uuidof(IETUDSink), (LPVOID*)&pETUDSink); if(pETUDSink) { pETUDSink->Start(); }が、クラスが登録されていないというエラーが常に返されます。MFC を使用して関連する .rgs ファイルを呼び出すことができず、それ以外の方法でこれを機能させる方法に完全に行き詰まっています。

私が気付いていない、ETUDriver を使用した経験がある (または MFC を使用せずに C++ で動作させることができる) 人がいる特定の形式はありますか?

この件に関してあなたが提供できる助けをありがとう:)

4

1 に答える 1

0

問題の特定の DLL について詳しくは知りませんが、ターゲット マシンに DLL を登録していないようです。これを行うには、 regsvr32.exeを実行するか、DLL のエクスポートされたDllRegisterServer関数を呼び出すか、サイド バイ サイド アセンブリを使用します。内部で COM 機能を利用する必要がある各マシンに DLL を登録する必要があるため、アプリケーションを配布するときは、regsvr32.exe ルートを使用する場合は、インストーラーが DLL を登録するようにしてください。

Microsoft Visual C++ の#import ディレクティブを使用すると、ヘッダー ファイルを使用したり、ドキュメントに基づいて自分で書き直したりしなくても、DLL に含まれる情報を読み込むことができます。

于 2013-04-04T18:40:26.843 に答える