与特定COM DLL交互

时间:2013-04-04 18:21:56

标签: dll com

我正在尝试与.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的经验(或者能够使用C ++而不使用MFC)?

感谢您就此主题提供的任何帮助:)

1 个答案:

答案 0 :(得分:0)

我不熟悉有问题的特定DLL,但听起来你没有在目标机器上注册DLL。您可以通过运行regsvr32.exe或调用DLL导出的DllRegisterServer函数或使用side-by-side assemblies来执行此操作。您需要在需要利用其中的COM功能的每台计算机上注册DLL,因此在分发应用程序时,如果您使用regsvr32.exe路由,请确保安装程序注册DLL。

您可以使用Microsoft Visual C ++中的#import directive加载DLL中包含的信息,而无需使用头文件或根据文档自行重写。