我有一个.dll文件和.lib文件。
DLL与电子密钥阅读器通信,允许您读取/写入密钥ID。
这是随附的唯一文档:
DLL Usage:
boolean = object.DevicePresent (PROPERTY: true if the device is present)
boolean = object.KeyPresent (PROPERTY: true if a key is in the device)
long = object.KeyId (PROPERTY: gets the keys id)
object.WriteKeyId KeyId (METHOD: Writes new id to the key)
Private Sub object_KeyRemoved (EVENT: Key removed)
我之前从未使用过DLL,也不知道我应该如何在C程序中使用它。我真的不知道过去做了什么:
#include <stdlib.h>
#include <windows.h>
typedef int (__cdecl *MYPROC)(LPWSTR);
int main(int argc, char *argv[])
{
HINSTANCE hinstLib;
hinstLib = LoadLibrary(TEXT("ekey.dll"));
if (hinstLib != NULL)
{
//now what? how do i get the properties or call a method?
}
return 0;
}
如果有人可以告诉我如何获取DevicePresent以及如何使用WriteKeyId,我会非常感激!
答案 0 :(得分:4)
该文档表明该DLL是一个OCX,旨在与Visual Basic一起使用。
尝试使用regsvr32。如果喜欢它,您可以从visual studio为它构建必要的COM API。
从C安排直接调用此类事件将非常困难,但您可以尝试使用dumpbin查看它并查看它导出的内容。
根据评论,将DLL的#import添加到C程序是最快的方法。
答案 1 :(得分:0)
见GetProcAddress()。确保使用dumpbin /exports Foo.dll
E.g。
BOOL *pPresent = (BOOL *)GetProcAddress(hInstLib, _T("DevicePresent"));
if (pPresent) {
printf("%d\n", *pPresent);
}
警告您必须知道此对象在二进制级别的确切数据类型!可能存在比较VB&lt; - &gt;的参考。 Platform SDK数据类型。
答案 2 :(得分:0)
这是一个COM DLL。这使得在直接使用C时几乎不可能。