Forum: PC-Programmierung Wie eine COM DLL für VB6 mit Mingw in C++ schreiben


von Peter (Gast)


Lesenswert?

Guten Abend.

Ich möchte eine DLL schreiben die von einem VB6 Programm über die COM 
(ATL / ActiveX) Schnittstelle  angesprochen wird.
Das VB6 Programm (nicht von mir) soll die DLL als Plugin laden.

Das das mit einem MS Compiler geht ist mir klar.
Da finde ich auch Tonnen von Beispielen.
Aber so was habe ich nicht und will ich auch nicht haben.

Ich hatte zwar mal ein Beispiel gefunden aber die Seite ist offline.
Jetzt sitze ich hier und bin am verzweifeln.

Kann mir jemand helfen?
Oder wenigstens mir eine Seite nennen wo ich eine Anleitung finde.

Viele Grüße, Peter

von Peter II (Gast)


Lesenswert?

Peter schrieb:
> Kann mir jemand helfen?

es ist doch auch nur eine normale DLL. Kann denn Mingw keine DLLs bauen 
oder wo ist dein Problem?

man kann sich Probleme auch selber schaffen, statt einfach das 
kostenlose SDK zu laden dort den Compiler zu nutzen, wird versucht es 
"anders" zu machen.

von Peter (Gast)


Lesenswert?

Immer das gleiche!
Das zeigt mir das Du keine Ahnung hast von diesen COM kram.
Sag doch gleich das ich VB6 nehmen soll, damit geht es garantiert.
Darum geht es aber nicht, Mingw (GCC) ist der Wunsch Compiler.

Eine DLL ist logisch was einfaches auch eine die ich aus VB6 aufrufen 
kann.
Aber wenn das ganze über die COM Schnittstelle läuft ist das plötzlich 
was ganz anderes.

Der GCC kann das ich finde halt nur kein Beispiel dafür, bzw ist das 
einzige was ich mal gefunden hatte nicht mehr da.

Peter

von Peter II (Gast)


Lesenswert?

Peter schrieb:
> Das zeigt mir das Du keine Ahnung hast von diesen COM kram.

haha, dann sag doch mal wo der Unterschied zu einer normalen DLL sein 
soll?

sie hat nur ein paar definierte Exportierte Funktionen wie z.b.

DllGetClassObject
DllRegisterServer
DllUnregisterServer
DllCanUnloadNow


es ist aber immer noch eine normale DLL.

von Peter (Gast)


Lesenswert?

Klar ist es eine DLL egal wie man es dreht.

Anscheinend habe ich mich geirrt und Du hast doch Ahnung.

Kannst Du mir auch außer ein paar Namen auch sagen wie man damit umgeht?
Oder wenigstens sagen wo mal ein gutes Beispiel zu finden ist.

Peter

von Peter II (Gast)


Lesenswert?

Peter schrieb:
> Oder wenigstens sagen wo mal ein gutes Beispiel zu finden ist.

Google liefert wir spontan:

http://www.die-seite.ch/?activex


das sollte sich mit jeden Compiler übersetzen lassen. (keine Ahnung ob 
du aber die passenden Headerdateien hast.)

von Peter (Gast)


Lesenswert?

Ob das geht muss ich erst testen.
Kann sein das das nur mit dem MS Compiler geht, dafür ist das ja ein 
Beispiel.

Für dem MS Compiler habe ich übrigens dutzende Beispiele aber die waren 
alle nicht mit dem Mingw kompatible.

VG, Peter

von Peter II (Gast)


Lesenswert?

Peter schrieb:
> Kann sein das das nur mit dem MS Compiler geht, dafür ist das ja ein
> Beispiel.

welchen Grund sollte es dafür geben? Es ist eine normale DLL. Sie wird 
wir eine normale DLL gebaut. Es gibt dort nichts was der Compiler anders 
machen muss.

Die Frage warum du dir überhaupt das COM zeugt antust. VB kann auch 
Funktionen aus einfachen DLLs ansprechen. Wenn die COM-DLL keine gui 
bereitstellen muss, dann würde ich darauf verzichten.

von Peter (Gast)


Lesenswert?

Nun das VB6 Programm ist nicht von mir und hat halt für seine Plugins 
diese Schnittstelle gewählt.
Also daran kann ich nichts ändern.

Da ich kein VB6 kann und immer nur das mit dem GCC mache, muss ich halt 
das irgendwie zum laufen bringen.


Ja es ist nur eine DLL, aber da steckt halt der ganze COM Kram drin und 
dafür suche ich halt ein Beispiel.

Peter

von Hüpfmus (Gast)


Lesenswert?

Ich habe genau das selbe Problem: Erzeugung einer COM-DLL ohne Microsoft 
Compiler.

Ich habe einge Seiten gefunden die, nach einem ersten Überlesen in die 
richtige Richtung zu gehen scheinen.

http://stackoverflow.com/questions/84269/using-component-object-model-com-on-non-microsoft-platforms

Das folgende scheint ein lauffähiges Ergebnis zu ergeben:

http://www.codeproject.com/Articles/13601/COM-in-plain-C#DLL

aber ich habe es noch nicht ausprobiert. Ein Hacken ist das dennoch 
notwendige downloaden eines "SDK" von MS von dem ich nicht weiss wie es 
genau heisst.

Wenn jemand weitere Tips hat, wäre ich auch sehr interesiert.
Wenn jemand die Infos aus diesen Links sinnvoll oder auch nutzlos findet 
würde mich das auch intressieren.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.