2016-11-09 1 views
0

je le code suivant de ce que je lis à partir du qt wiki:échec Qt ActiveX CoCreateInstance (classe non enregistrée) Adobe Reader

auto pdfObject = new QAxObject("AxAcroPDFLib.AxAcroPDF"); 
qDebug() << pdfObject->dynamicCall("LoadFile(const QString)", "test.pdf"); 
qDebug() << pdfObject->dynamicCall("Print()"); 

Mais quand je le lance, je reçu le message:

CoCreateInstance failure (Class not registered) 
QAxBase::setControl: requested control AxAcroPDFLib.AxAcroPDF could not be instantiated 

J'ai recherché la DLL requise et trouvée dans C:\Program Files (x86)\Common Files\Adobe\Acrobat\ActiveX et j'ai installé Adobe Acrobat Reader DC. Que puis-je faire pour que cela fonctionne?

+1

Yikes, quiconque a écrit que l'entrée wiki ne comprend pas les beans sur la façon dont fonctionne COM. L'utilitaire .NET Regasm.exe est un pistolet très dangereux dans de mauvaises mains. Vous pouvez également dire que l'interrupteur de sécurité était éteint lorsqu'il a listé Linux et Mac comme plates-formes possibles. Le bon ProgId est "AcroPDF.PDF". Evitez de prendre une dépendance à Acrobat, pas le type de programme que vous voulez avoir pour vous-même. Beaucoup et beaucoup de visionneuses PDF autour. –

+0

La raison possible est que ActiveX est 32 bits et votre application est 64 bits, donc il ne peut pas trouver ActiveX – demonplus

Répondre

0

L'objet COM est probablement introuvable en raison d'un enregistrement manquant. Assurez-vous que la DLL ActiveX est enregistrée. Utilisez regsvr32. Vous pourriez avoir besoin de privilèges d'administrateur pour l'exécuter. La ligne de commande est:

regsvr32 AcroPDF.dll