System.EntryPointNotFoundException obwohl Funktion genau so definiert
-
Hallo zusammen,
mein eigentliches Programm läuft auf vb.net, ich muss allerdings eine Nachricht an einen anderen Rechner schicken.Diese Kommunikation läuft über ROS. Daher habe ich in C++ eine DLL geschrieben, die in meinem Programm aufgerufen wird. Leider findet vb.net eine Funktion nicht, obwohl ich sie genauso verwende wie vorgesehen.
Die Definition in C++extern "C" __declspec(dllexport) void __stdcall InitRosPublisher(Connect2ROS* myClass, std::string rosmaster_str, std::string topic) { //Source:https://stackoverflow.com/questions/7352099/stdstring-to-char std::vector<char> cstr(rosmaster_str.c_str(), rosmaster_str.c_str() + rosmaster_str.size() + 1); char *rosmaster = &cstr[0]; myClass->InitRosPublish(rosmaster, topic); }
ich wandle hier ein string zu char *, weil ein String viel einfacher in vb.net zu erzeugen und zuhandlen ist.
in vb.net importiere ich die FUnktion erstmal in einer eigenen Klasse<DllImport("SendMsgToROS_final.dll", CallingConvention:=CallingConvention.StdCall)> Public Shared Sub InitRosPublisher(ByVal value As IntPtr, ByVal rosmaster As String, ByVal topic As String) 'topic und Rosmaster festlegen End Sub
und rufe sie wie folgt in meinem Hauptprogramm auf:
topic = Topic_texbox.Text rosmaster = Rosmaster_textbox.Text meineKlasse = importFunctions.InitConnection() importFunctions.InitRosPublisher(meineKlasse, rosmaster, topic)
Ich hoffe, dass mir jemand helfen kann
viele Grüße
Chris
-
https://stackoverflow.com/questions/874551/stdstring-in-c
D. h. in den Argumenten
std::string
durchconst char*
ersetzen.