2017-04-24 3 views
-2

Ceci est alambiqué pour que vous en perdiez tout de suite. Nous avons acheté un contrôle ActiveX 32 bits auprès d'un fournisseur il y a longtemps pour un programme interne développé avec Visual C++ 6.0. Maintenant, nous allons mettre à jour notre programme en utilisant Visual Studio 2013 pour avoir à la fois une plate-forme 32 bits et 64 bits. Le fournisseur ne supporte plus C++ ni une version 64 bits de ce fichier activex. Je suis capable de construire le logiciel en utilisant Visual Studio 2013 32 bits et le contrôle ActiveX fonctionne parfaitement. Mais, en raison des différences de plate-forme, la construction du logiciel en utilisant 64 bits, le logiciel fonctionne à l'exception de la partie qui a besoin du contrôle ActiveX. Maintenant, j'ai exécuté la visionneuse d'objets OLE/COM (OleView.exe) et créé avec succès un fichier IDL à partir du fichier activex ocx. Ensuite, j'ai été capable de compiler le fichier IDL (après un débogage) pour créer des fichiers * _h.h et * _i.c. La question: existe-t-il un moyen simple et élégant de prendre ces fichiers et de reconstruire l'ActiveX en plateforme 64 bits?Fichier 32 bits * .ocx vers le fichier IDL en * _h.h et fichier * _i.c converti en fichier 64 bits * .ocx

+0

Vous réalisez que ce ne sont que des fichiers qui concernent les interfaces? Pour reconstruire un contrôle ActiveX prend tout le reste des fichiers source. Vous devriez demander pourquoi vous avez vraiment besoin d'une version 64 bits? Avez-vous besoin de ressources et de mémoire accrues, ou s'agit-il simplement de marketing, ou d'un bug sur les fesses de certains boss? Vous ne pouvez pas simplement recompiler ces fichiers en 64 bits. Si vous utilisez VS 2013 (et demandez pourquoi pas 2017?), Vous devez extraire la bibliothèque de types de l'OCX, l'enregistrer en tant que fichier .TLB, puis # importer dans votre projet. Google pour DllSurrogate. Peu importe ce que votre OCX 32 bits doit exécuter dans un processus 32 bits. –

+0

@ JoeWillcoxson, merci pour le commentaire. Même si le projet est uniquement utilisé en interne, nous avons besoin des DLL des clients qui ont demandé à passer à 64 bits. Je ne sais pas pourquoi VS 2013 a été choisi. Si vous créez une réponse qui indique que cela ne peut pas être fait avec les paramètres que j'ai fournis, je l'accepterai. – jackson80

Répondre

0

Vous ne pouvez pas simplement recompiler les fichiers d'en-tête et les fichiers .c qui composent l'interface de l'OCX pour créer un OCX 64 bits. L'OCX se compose des fichiers d'interface et de nombreux autres fichiers qui sont l'implémentation du contrôle. Essayer de le faire tel que vous êtes ne fonctionnera pas.