Frage

Ich laufe regelmäßig in ähnlichen Situationen: Ich habe eine Reihe von COM-DLLs (keine IDL-Dateien), die ich verwenden müssen, und rufen zu können, einig ausländisches zuzugreifen (nicht-offenes, nicht dokumentiert) Datenformat.

Microsoft Visual Studio-Plattform verfügt über sehr schöner Funktionen wie zur COM-DLLs zu importieren und sie in meinem Projekt (Visual C ++ 's # Import-Direktive oder Kommissionierung und das Hinzufügen von ihnen von Visual Basic .NET Dialoge verwenden) - und das ist der Verkäufer Weg empfohlen zu verwenden sie.

Es würde mich interessieren in einen Weg zu finden, diese DLLs auf Nicht-Microsoft-Entwicklungsplattformen zu verwenden. Das heißt, diese COM-Klassen in C ++ Projekt mit MinGW oder Cygwin zusammengestellt, oder sogar Wein GCC-Port auf Linux (kompiliert C ++ Win32 in binären Lauf Targeting nativ auf Linux).

Ich habe einige begrenzten Erfolg mit dieser Fahrer bekam, aber das isn‘ t erfolgreich in 100% der Situationen (I nicht COM-Objekte zurückgegeben durch einige Methoden verwenden kann).

Hat jemand Erfolg in ähnlichen Situationen hat?

War es hilfreich?

Lösung

Die Beantwortung mich, aber ich es geschafft, die perfekt Bibliothek für OLE / COM finden Aufruf in Nicht-Microsoft-Compiler: disphelper .

(es ist erhältlich von sourceforge.net unter einer permissiven BSD-Lizenz).

Es funktioniert sowohl in C und C ++ (und damit eine andere Sprache mit C-Bindungen als auch). Es verwendet eine printf / scanf-like Format-String-Syntax .
(Sie passieren, was Sie wollen, solange Sie es im Format-String angeben, im Gegensatz zu XYDispDriver das erfordert, dass die Argumente genau entsprechen, was auch immer in der Typbibliothek angegeben wird).

ich es ein wenig verändert, um es auch mit WineGCC (produzieren native Linux Elf aus Win32-Code) unter Linux kompilieren, und „von ref“ zu handhaben Anrufe automatisch (Aktien disthelper erfordert die Programmierer Einrichtung ihren / seinen eigene VARIANT).

Meine gepatchte Version und Patches sind als Gabel auf Github verfügbar:

Und hier sind meine Patches:

Andere Tipps

Das Problem mit dem OLE / COM-Objekt-Viewer verpackt mit Visual Studio und Windows SDKs ist, dass es ein gebrochenes IDL aus dem .DLL- erzeugt, die nicht weiter durch MIDL in ein .H / CPP-Paar zusammengestellt werden können .

Weines eigene Reimplementation OleViewer ist derzeit instabil und stürzt ab, wenn sie versucht, diese Bibliotheken zu verwenden.

Ich denke, Sie sollten das kostenlose Tool OLE / COM-Objekt-Viewer macht die Header-Dateien verwenden können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top