0

我正在尝试与 .dll 进行交互,这将允许我从各种设备(具体为 Eye Gaze)接收信息。.dll 称为 ETUDriver,可在http://www.sis.uta.fi/~csolsp/projects.php找到,但它没有随附的 .h 文件。

我正在努力从 .dll 实际加载、交互和调用函数。提供了手册,但对于实际设置代码以启动它没有任何帮助。随附三个示例应用程序(带有源代码),但其中只有两个可以工作,其中一个是 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 回答