À l'aide du Modèle d'Objet Composant (COM) sur les plates-formes Microsoft
Je suis régulièrement en cours d'exécution dans des situations similaires :
J'ai un tas de COM .Dll (pas de fichiers IDL) dont j'ai besoin pour utiliser et invoquer pour être en mesure d'accéder à certains étrangers (non ouvert, non documenté) format de données.
De Microsoft Visual Studio plate-forme a de belles capacités à l'importation, de COM Dll et l'utiliser dans mon projet (Visual C++directive #import, ou la cueillette et de les ajouter à l'aide de Visual Basic .NET boîtes de dialogue) et que les vendeurs recommandé de l'utiliser.
Je serais intéressé pour trouver un moyen d'utiliser les Dll non microsoft plates-formes de développement. À savoir, l'utilisation de ces classes COM en projet C++ compilé avec MinGW ou Cygwin, ou même du Vin port de GCC sous linux (compile en C++ ciblage Win32 en binaire s'exécutent en mode natif sur Linux).
J'ai obtenu un certain succès à l'aide de cette pilote, mais ce n'est pas efficace dans 100% des situations (je ne peux pas utiliser les objets COM retourné par certaines méthodes).
A quelqu'un avait du succès dans des situations similaires ?
Vous devez vous connecter pour publier un commentaire.
Répondre à moi-même, mais j'ai réussi à trouver le parfait bibliothèque pour OLE/COM appelant à la non-compilateurs Microsoft : disphelper.
(il est disponible à partir sourceforge.net sous permissive license BSD).
Il fonctionne à la fois en C et C++ (et donc une autre langue avec des liaisons C ainsi). Il utilise un printf/scanf comme format de la syntaxe de la chaîne de.
(Vous transmettre tout ce que vous voulez tant que vous spécifiez dans la chaîne de format, contrairement à XYDispDriver qui requiert les arguments pour correspondre exactement à ce qui est spécifié dans la bibliothèque de type).
Je l'ai modifié un peu pour l'obtenir également de compiler sous Linux avec WineGCC (pour produire natif de Linux elf de code Win32), et à traiter "par ref" automatiquement les appels (stock disthelper le programmeur à l'installation de son/sa propre VARIANTE).
Ma version patchée et des correctifs sont disponibles comme un fork sur github:
Et voici mes patchs :
patch pour unique source
patch pour le split source
Le problème avec le fournisseur Ole/Com Object Viewer emballés avec Visual Studio et Windows Sdk est qu'il produit un cassé .IDL de la .DLL, ce qui ne peut pas être compilé par MIDL dans un .H/.CPP paire.
Vin propres de la remise à plat de OleViewer est actuellement instable et se bloque lorsque vous essayez d'utiliser ces bibliothèques.
Je pense que vous devriez être en mesure d'utiliser l'outil gratuit d'Objet Ole/Com Visionneuse pour rendre les fichiers d'en-tête.