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 durch const char* ersetzen.


Anmelden zum Antworten