Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » COM Objekt mit plain C

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
21.01.2008, 11:55 Uhr
~ygtz
Gast


High Leute,
ich habe folgendes Problem und suche verzweifelt nach einer Lösung:

Ich muss aus einem COM-Objekt Methoden verwenden (diese sind in einer dll-Datei), kann aber, um dieses anzusprechen, keine Umgebung verwenden, sondern muss es zu Fuß in C machen weil dieser Code dann wiederum in ein anderes Programm eingebunden wird. Ich habe jetzt schon ziemlich lange im Internet recherchiert und bin darauf gestoßen, dass ich einen Wrapper programmieren muss.
Kann mir dazu jemand Hinweise geben?
Wie spreche ich die Methoden in der dll an, wie binde ich sie ein?

Vielen Dank im vorraus!
Christoph
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
21.01.2008, 12:04 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)




Was meinst du damit das du keine Umgebung dazu verwenden kannst? Meinst du ohne Entwicklungsumgebung? Dann wünsch ich dir schonmal viel Spaß (den du dabei aber sicherlich nicht haben wirst)

Ansonsten schau mal hier vorbei, da findest du verschiedene Artikel zum Thema, vielleicht ist ja was hilfreiches dabei:
www.codeguru.com/cpp/com-tech/
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
21.01.2008, 13:01 Uhr
ao

(Operator)


Hi Christoph,

verrat mal ein bisschen mehr Konkretes.

Ist es wirklich C? Oder C++?

Was meinst du mit "keine Umgebung verwenden"? Was heißt "in ein anderes Programm eingebunden"?

Schreibst du eine DLL? Natürlich kannst du die mit einer "richtigen" Entwicklungsumgebung entwickeln. Du kannst sie sogar debuggen, während sie unter Kontrolle eines anderen Programms läuft.

Welche Entwicklungstools hast du zur Verfügung? MS VC6?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
22.01.2008, 15:56 Uhr
~ygtz
Gast



Zitat von ao:
Hi Christoph,

verrat mal ein bisschen mehr Konkretes.

Ist es wirklich C? Oder C++?




Hi ao,
es ist C, weil ich diesen Code dann in Modelica-Code einbinden will/muss. Und da geht leider kein C++.


Zitat von ao:

Was meinst du mit "keine Umgebung verwenden"? Was heißt "in ein anderes Programm eingebunden"?




Damit meine ich, dass ich z.b. kein .Net verwenden kann, da der C-Code zusammen mit dem Modelica Code kompiliert wird.


Zitat von ao:

Schreibst du eine DLL? Natürlich kannst du die mit einer "richtigen" Entwicklungsumgebung entwickeln. Du kannst sie sogar debuggen, während sie unter Kontrolle eines anderen Programms läuft.



Die dll habe ich schon, sie kommt von extern, in der dll sind die Methoden, die ich brauche, um auf ein wiederum anderes Programm zuzugreifen und dort Werte auszulesen. Im VB.Net zum Beispiel binde ich die Dll als Com- Objekt ein, erstelle ein Obekt und kann dann die Methoden nutzen. Jetzt ist eben die Frage, wie ich eben das, was die VB.Net - Umgebung mit der dll macht, zu Fuss in C lösen kann.
Um es auf den Punkt zu bringen, ich will die Sachen, die in der dll sind, also das Com-Objekt, in C nutzen, weil ich darüber Werte auslesen muss.
Kann man überhaupt auf eine von einem anderen Programmierer geschriebene dll zugreifen? Ist die irgendwie codiert?

Vielen Dank schon mal, dass ihr euch die Zeit nehmt und euch das hier durchlest!!!
Viele Grüße,
Christoph
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
22.01.2008, 19:39 Uhr
ao

(Operator)


Ja, gehen tut das, aber COM-Clientcode in C ist echt schmerzhaft. Ich hab COM-Programmierung immer in C++ machen "dürfen", und ich habe nur wenig Clientcode geschrieben, sondern meist COM-Server programmiert.

Ich entnehme deinen Andeutungen, dass du Visual Studio 2005 hast, stimmts? Damit hab ich leider (oder zum Glück ) noch keine COM-Entwicklung gemacht, nur mit VC 6. Ich würde sagen, versuch erst mal ein eigenes Projekt aufzusetzen, ohne Modelica, aber mit Einbindung des COM-Objekts.

In VC 6 ging das, indem man in einem geeigneten Header

#import "TheComObject.dll"

schrieb. Wie mans in VS2005 macht, weiß ich nicht.

Das Studio erzeugt dann ziemlich scheußlichen Wrapper-Code, aber wenn du einmal verstanden hast, wie der aufgebaut ist und wie man ihn benutzt, dann kannst du ihn in das Modelica-Projekt kopieren.

Ich würd sagen, mach das erst mal und guck dir an, was dabei rauskommt.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
05.02.2008, 11:46 Uhr
~ygtz
Gast


Hallo ao,
super, danke, das hab ich jetzt gemacht und habe den Wrapper-Code in 2 Header-Files im Debug-Ordner gefunden. Hier stehen auch die ganzen Funktionen, die ich brauche.

Jetzt habe ich allerdings noch ein Problem: Ich habe versucht, die Header in ein C-Projekt im VS 2003 einzubinden, da meckert er aber und sagt: "fatal error C1189: #Fehler: Native Compiler support only available in C++ compiler". Hast du vielleicht noch eine andere Idee, wie ich was bekomme, was in plain C nutzbar ist? Gibt es in C Namespaces?

Wenn ich sie in ein C++-Projekt einbinde, dann funktioniert das Einbinden soweit. Ich schaffe es aber nicht, den Code zu nutzen: Im Wrapper befinden sich structs, typedefs, virtuelle Methoden und enums, aber keine Klassendefinition. Wie kann ich das alles nutzen in c++?

Vielen Dank nochmal und viele Grüße,
Christoph
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: