首先新建一个控制台win32程序,将 ocx 文件 import 进来,我这里用的是 Debug x86 方式编译
#include <iostream>
#import "JReadCard.ocx" no_namespace
using namespace std;
编译后,会在 debug 目录下生成两个文件
jreadcard.tlh
jreadcard.tli
将第一个文件的后缀改为 .h,将里面的
#include "E:\lujianfeiWork\other\cpp\ocxdemo\ocxdemo\Debug\jreadcard.tli"
注释掉,然后连同第二个文件都放到主函数的源文件同级的目录中,在调用文件中引用,写法如下:
#include <iostream>
#include "jreadcard.h"
#include "jreadcard.tli"
using namespace std;
int main() {
CoInitialize(NULL);
CLSID clsid;
HRESULT hr = CLSIDFromProgID(OLESTR("JReadCard.ActiveFormX"), &clsid);
cout << "clsid=" << clsid.Data1 << endl;
IActiveFormX* ptr;
hr = CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER,
__uuidof(IActiveFormX), (LPVOID*)&ptr);
ptr->Open(36, 8);
ptr->rfbeep(100);
Sleep(5000);
CoUninitialize();
return 0;
}
这样就可以调用起来了
参考:
https://blog.csdn.net/u011555996/article/details/76073157