В итоге все-таки решил все
В моей случае вот верный код на Visual C++
// ConsoleApplication5.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <windows.h>
#include "Objbase.h"
#import "MifareDrv.tlb" rename_namespace("mifare")
CLSID clsid;
mifare::IMifareDrv ;
IDispatch *pWApp;
mifare::IMifareDrv *pMiDrv;
int _tmain(int argc, _TCHAR* argv[])
{
HRESULT hr = CLSIDFromProgID(L"Addin.MifareDrv", &clsid);
if (SUCCEEDED(hr))
{
LPOLESTR tmpbuf;
StringFromCLSID(clsid, &tmpbuf);
CoInitializeEx(NULL, COINIT_MULTITHREADED); // инициализация COM для ридеров
hr = CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER, IID_IDispatch, (void **)&pWApp);
hr = pWApp->QueryInterface(__uuidof(mifare::IMifareDrv), (void **)&pMiDrv);
pMiDrv->PortNumber = 4;
pMiDrv->Connect();
pMiDrv->BeepTone = 1;
pMiDrv->PcdBeep();
}
return 0;
}
А вот код на Qt
#include <QApplication>
#include <QAxWidget>
QAxWidget *drvFR;
#define CLSID_DrvFR "{450E3DC0-5370-4007-BD5F-90827EC2C2D6}" // это GUID для объекта драйвера (у меня он звался Addin.MifareDrv). GUID вытащил из регистра
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
drvFR = new QAxWidget();
drvFR->setControl(CLSID_DrvFR);
drvFR->dynamicCall("FindDevice()");
drvFR->dynamicCall("Connect()");
drvFR->setProperty("BeepTone", 1);
drvFR->dynamicCall("PcdBeep()");
....
и дописать в .pro write QT += axcontainer.