Hallo zusammen, ich versuche seit einiger Zeit die mosquitto library, mit der man die MQTT Funktionalität integrieren kann, im Visual C++ Express zum Laufen zu bringen. Ich habe es zuvor mit Bloodshed Dev-C++ ohne Probleme hinbekommen. Ich habe dazu die header-Datei eingebunden und dem Linker die lib Datei zur Verfügung gestellt. Ich hatte es mir im Visual Express ähnlich einfach vorgestellt, allerdings bekomme ich zu jeder eingebundenen Funktion aus dem header die folgende Fehlermeldung: "mosquitto_sub_topic_check": Ist als __declspec(dllimport) markiert. Beim Importieren einer Funktion muss eine systemeigene Aufrufkonvention angegeben werden. Wenn ich dann auch noch eine Funktion aufrufe, kommt: 1>test.obj : error LNK2031: p/invoke konnte nicht für ""extern "C" int __clrcall mosquitto_lib_init(void)" (?mosquitto_lib_init@@$$J0YMHXZ)" generiert werden. In den Metadaten fehlt die Aufrufkonvention. 1>test.obj : error LNK2028: Nicht aufgelöstes Token (0A000036) ""extern "C" int __clrcall mosquitto_lib_init(void)" (?mosquitto_lib_init@@$$J0YMHXZ)", auf das in Funktion ""int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)" verwiesen wird. 1>test.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" int __clrcall mosquitto_lib_init(void)" (?mosquitto_lib_init@@$$J0YMHXZ)" in Funktion ""int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)". Hat das schon mal jemand gemacht bzw. kann mit den Fehlermeldungen etwas anfangen. Ich habe schon etliche Webseiten und Foren durchforstet, allerdings konnte ich daraus nicht allzu viel für mein Problem daraus ableiten. Gruß testuser
testuser schrieb: > Hat das schon mal jemand gemacht bzw. kann mit den Fehlermeldungen etwas > anfangen. Ich habe schon etliche Webseiten und Foren durchforstet, > allerdings konnte ich daraus nicht allzu viel für mein Problem daraus > ableiten. du hast vermutlich ein falsches Projekt angelegt. Das ist keine C++ sondern CLI. (also C++ + .NET ). Du musst ein echtes C++ Projekt anlegen, wenn du es nicht kannst, hast du die falsche Express Edition.
Ich glaube du hast Recht, ich habe unter VisualC++ -> CLR eine Windows Forms Anwendung angelegt, weil ich ein GUI haben wollte. Wenn das falsch ist, wie kann ich dann die Library mit einer GUI Anwendung nutzen? So ganz blicke ich da noch nicht durch...
Indem Du eine C++-Klassenbibliothek für GUI-Anwendungen nutzt. Microsoft selbst stellt dafür die MFC zur Verfügung, aber es gibt auch andere, wie Qt oder wxWidgets. Beide lassen sich auch mit Visual Studio verwenden, müssen aber separat installiert werden. "Windows Forms" aber ist nicht mit C++ verwendbar, wie alle anderen .Net-Dinge auch. Rein prinzipiell kann man natürlich auch native DLLs aus dem .Net-Geraffel heraus nutzen, hat dann aber einen Schichtkuchen an "interop"-Layern und anderem kaum debugbaren Kram an der Backe.
testuser schrieb: > Wenn das falsch ist, wie kann ich dann die Library mit einer GUI > Anwendung nutzen? ich kenne die Mosquitto lib nicht. Aber auch unter .net (C# oder C++ CLI) kann man Funktionen aus einer Dlll nutzten. Bei C++ gibt es die MFC (ich glaube aber nicht in der Express Edition) damit kann man auch eine GUI bauen. Ich würde mit C# die GUI machen und die Funktionen aus der Dll einbinden. https://msdn.microsoft.com/de-de/library/cc431203.aspx Man könnte auch C++ und QT oder ähnliches verwenden, kommt halt darauf an was du kannst. C++ würde ich zumindest nicht mehr bei einer GUI verwenden, das ist alles irgendwie umständlich.
scheinbar gibt es das auch direkt für C++ CLI (oder C#) https://m2mqtt.wordpress.com/m2mqtt_doc/ dann brauchst du nicht die dll.
Peter II schrieb: > (ich glaube aber nicht in der Express Edition) Da nicht, aber in der ebenfalls kostenlosen "Community Edition".
Das ging ja fix mit den Antworten. Vielen Dank dafür. Jetzt habe ich wieder einige Punkte an denen ich ansetzen kann, aber im Großen und Ganzen scheinen mir ein paar Basics zu fehlen. Mal schauen wie weit ich komme...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.