ocx, dll, libs! Einbinen,verweisen, statisch ,dynamisch? Was nun und warum?
-
Ich bin neu in der Programier welt, und bin leicht überfordert was allg. Bibliotheken angeht und wie sie in nem OS (Windows) verwaltet werden.
Kann jede Programmiersprache, jede Library andere sprachen einbinden? Wie werden gemeinsame interface geschaffen?
Kann ich bsp. in .NET ne dll schreiben und diese in C++ verwenden?
Was unterscheide COM objecte mit dlls? bin komplett verwirrt in diese Welt.
-
SchülerLibrarys schrieb:
Kann jede Programmiersprache, jede Library andere sprachen einbinden? Wie werden gemeinsame interface geschaffen?
Nur wenn sie binärkompatible Formate verwenden. In der Regel würde ich im ersten Moment daher nein sagen, du kannst nicht zwangsweise eine Bibliothek aus einer Sprache (oder gar Sprache/Compilerversion) in eine andere übernehmen.
SchülerLibrarys schrieb:
Kann ich bsp. in .NET ne dll schreiben und diese in C++ verwenden?
Nicht direkt. Wenn du die DLL aber COM-Kompatibel machst (geht über die Einstellungen), kann man sie mittels COM ansprechen.
SchülerLibrarys schrieb:
Was unterscheide COM objecte mit dlls? bin komplett verwirrt in diese Welt.
Also grundsätzlich ist der Vergleich etwas problematisch, eine COM-Bibliothek kann ebenso die Endung .dll haben wie eine .Net-Bibliothek oder eine "native" wie unter C.
COM stellt gewisse Regeln auf wie man (mehr oder weniger gut) über Sprach und Compilergrenzen hinweg Objekte ansprechen kann. Die .Net-Sprachen untereinander haben auch wieder eine solches Regelwerk, so das - wenn man sich an gewisse Regeln hält - innerhalb der .Net-Welt alle Sprachen die Bibliotheken untereinander mischen können. Und in der nativen Programmierung gibt es auch wieder Regeln, die besagen wie man eine gewisse Binärkompatibilität hinbekommt.
Ja, es ist schwer zu erklären, aber im ersten Moment:
a) .DLL und .DLL können unterschiedliche Schnittstellendefinitionen haben, daher kannst du an der Endung nicht unbedingt erkennen ob du sie mit einer Sprache xyz und einem Compiler zyx nun verwenden kannst.
b) Es gibt mehrere Möglichkeiten gewisse Schnittstellen über Sprach- und Compilergrenzen (in gewissen Rahmen) kompatibel zu gestalten. Mit COM (Was ich garnicht mag, zumindestens ist die Verwendung imho unter manchen Sprachen ein graus) kann man imho die größe Schnittmenge derzeit erreichen. Die .Net Bibliotheken wiederum haben den Vorteil das die Einbindung wahnsinnig vereinfacht wurde...Für die Verbindung zwischen "nativen" C++ und .Net würde ich aber eher C++/CLI als vermittler, statt COM einsetzen. Dennoch kein einfaches Thema das mit wenigen Textseiten beschrieben werden kann.
cu André
-
sagen wir , ich mach ne server/client architektur bspw. .NET remoting oder WCF. und will aber die client schnittsetlle so gestalten das der client auch in c++ o.a. geschireben werden kann aber die .NET schnittstelle verwenden kann? oder soll ich die schnittsetlle ehr icn c++ schreiben? Ist schwer sowas zu definieren find ich, es gibt halt zu viel möglichkeiten.
Aber ich kann definitv .NET Remoting in C++ verwenden?
-
noch ne frage, ist .NET auch WinXP embedded kompatibel?
-
sorry mir fallen tausende fragen ein?
kann ich unmanaged c++ nicht mir c++ managed .NET mischen?
-
SchülerLibrarys schrieb:
sorry mir fallen tausende fragen ein?
kann ich unmanaged c++ nicht mir c++ managed .NET mischen?
Doch:
asc schrieb:
Für die Verbindung zwischen "nativen" C++ und .Net würde ich aber eher C++/CLI als vermittler, statt COM einsetzen. Dennoch kein einfaches Thema das mit wenigen Textseiten beschrieben werden kann.
Aber:
C++/CLI ist in bestimmten Fällen gut um die Brücke zwischen managed und unmanaged Welt zu schlagen. Allerdings würde ich diese beiden Welten nur mischen / verbinden wenn Du gute Gründe hast.Das ganze Thema ist nicht einfach und kostet auch was (Geld, Zeit, ev. Performance, ...).
Asserdem steht noch P/Invoke zur Verfügung, was meiner Meinung nach weitaus einfach zu handhaben ist.
Vielleicht kannst Du mal den Grund nennen, warum Du die beiden Welten mischen möchtest?
Simon
-
SchülerLibrarys schrieb:
noch ne frage, ist .NET auch WinXP embedded kompatibel?
Ja, siehe: http://www.microsoft.com/windowsembedded/en-us/products/wexpe/product-features.mspx
-
naja ich will ne kleine server/client verbindung (interface) programmieren. Die daten sollen dan via wcf oder Remoting von server zu client übertragen werden. Nun möchte ich auf der client seite ein interface , dll ,oxc, com was auch immer programmieren welche für die datenübetragung zum server verantwortlich ist. Diese interface möchte ich halt in verschieden sprachen einbinden können wie com oder ocx..! Das ganze soll dann ähnlich wie bspw. ADO DAtenbank zugriff interface funktionieren. Das ist ja auch eine COM dll. oder?
-
ADO DAtenbank zugriff interface funktionieren. Das ist ja auch eine COM dll. oder
Das weiss ich nicht. Jedoch gibts ja auch ADO.NET. Ich würde mich entscheiden ob managed oder nicht und dann die Architektur dafür auslegen.
Simon
-
Was unterscheide COM objecte mit dlls? bin komplett verwirrt in diese Welt.
COM:
http://www.henkessoft.de/C++/MFC/mfc_einsteigerbuch_kapitel10.htm
http://www.henkessoft.de/C++/MFC/mfc_einsteigerbuch_kapitel11.htm
http://www.henkessoft.de/C++/MFC/mfc_einsteigerbuch_kapitel15.htmDLL:
http://www.henkessoft.de/C++/WinAPI/WinAPI Kapitel 1 bis 6/api6.htm
-
Ok danke freunde. Wie kann ich den rausfinden... bo eine dll ein ocx/com Komponente ist, oder ne einfache dll? Würde ich bspw. eine .NET com inteface proggen, könnte ich dies wahrscheinlich nich in unmanagst std. c++ verwenden oder? Würde ich aber eine COM oder ne C dll. schreiben die könnte ich dann überall einbinden?
-
Noch was^^ Erstellt man COM Componente auschliesslich mit MFC?? ne oder?