ActiveX Lib in ein C++ Projekt einfügen
-
Hallo!
Ich habe folgendes Problem.
Ich habe eine ActiveX-DLL die ich in ein C++ Projekt einfügen muss.
Ich habe die DDL-, die LIB- und die EXP- Datei zu Verfügung. Wie gehe ich nun vor? Ich kenne mich nur halbwegs mit VB.net aus, da würde ich einfach einen Verweis auf die DLL setzen und dann könnte ich die Funktionen der DLL verwenden. Aber wie mache ich das bei C++?
Eine andere wäre dann auch noch, wie ich auf eine Funktion dann zugreifen kann, der Befehl für VB.Net würde so aussehen "Public net1 As New NNActiveXDLL.NNNet". Wie sieht der bei C++ aus?Vielen Dank schon einmal für euere Hilfe!
Christian
-
Mal etwas Grundsätzliches: Sprechen wir hier von ISO C++ oder entwickelst du in .NET?
-
Grundsätzlich musst du über einen Header die zu benutzenden Funktionsdeklarationen in den Code einbinden, der die DLL-Funktionen aufruft. Wie du die DLL einbindest hängt davon ab ob du sie statisch linken möchtest oder zur Laufzeit laden, letzteres ist OS- und Compilerabhängig. "Projekte" gibts in Standard-C++ auch nicht, das ist eine IDE-Geschichte. Aus dem Grund verschieb ich das hier mal ins entsprechende Forum, allerdings solltest du noch angeben, welche IDE/Compiler du verwendest und was eben noch so wichtig ist.
-
Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ in das Forum Compiler- und IDE-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Wenn du eine ActiveX-DLL hast benötigst du keine Header oder LIB, es genügt wenn du die DLL ordnungsgemäß registrierst. Anschließend bindest du die Funktionalität mittel #import ein. Zur Programmierung mit COM-Objekten und Interfaces verwendest du am besten ATL mit CComPtr usw. oder die Compilerunterstützung mittels _com_ptr usw. Allerdings ist die ordnungsgemäße Verwendung von COM unter C++, trotz oben angegebener Hilfsmittel nicht trivial. Einarbeitung, mehr oder weiger, wird dir nicht erspart bleiben.
Dein Beispiel könnte dann in etwa so aussehn:
CComPtr<NNActiveXDLL::INNNet> spINNet; HRESULT hr = spINNet.CoCreateInstance(__uuidof(NNActiveXDLL::NNNet)); if (FAILED(hr)) { ...Fehlerabhandlung NIE vergessen. }
-
Meine Probelmstellung hat sich geändert, deshalb hab ich einen neuen Beitrag verfasst.
http://www.c-plusplus.net/forum/viewtopic-var-p-is-1895028.html#1895028