Wie eine COM DLL für VB6 mit Mingw in C++ schreiben

Gast #3392839
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
Gast #3392978
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.
Gast #3393743
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
Gast #3393760
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.
Gast #3393765
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
Gast #3394943
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
Gast #3394949
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.
Gast #3394993
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
Gast #3395845
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren