Unmanaged Dll C++ Funktionen in C Scharp einbinden

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
Ivo
Beiträge: 26
Registriert: Fr Sep 26, 2014 3:54 pm

Unmanaged Dll C++ Funktionen in C Scharp einbinden

Beitrag von Ivo » Fr Jun 24, 2016 6:17 pm

Hallo zusammen, Ich habe folgendes Problem:

Ich habe eine C# Application und ein C++ Projekt. MS Visual .net 2015.
Wie rufe ich jetzt von C# eine C++ Funktionen auf.
Suche schon einige Zeit und hab leider noch kein passendes Bsp gefunden.
Wo könnte man mehr Info findet?
Ich habe eine Toolbox und der Code für sie ist auf C++ geschrieben, wie man oben als Beispiel eine Funktion sehen kann. Dll Datei habe ich zur Verfügung.
Ich wäre sehr dankbar , wenn mir jemand ein bisschen mehr erklären kann.
Vielen Dank!
Hier ist eine Funktion von dem C++ Code:
C ++ Funktion

Code: Alles auswählen

 int Toolbox::Initialize(LPCSTR systemPath, LPCSTR license, DLL_LogFunc* logFunc)
{
	if (m_initialize) return m_initialize((char*)systemPath,(char*)license,logFunc);
	return -1;
}
C Sharp Code:

Code: Alles auswählen

 using System.Runtime.InteropServices;

namespace Project_1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }


        [DllImport("Toolbox.dll")]
        public static extern int Initialize( ????? ); // Funktion keine Methode. Was muss ich zwischen Klammern schreiben???
        private void btnExecute_Click(object sender, EventArgs e)
        {
              initialize( ???? );
        }
    }

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Unmanaged Dll C++ Funktionen in C Scharp einbinden

Beitrag von cloidnerux » Fr Jun 24, 2016 9:02 pm

Hier gibt es Infos dazu:
https://msdn.microsoft.com/de-de/library/cc431203.aspx
Du musst die Datentypen deklarieren, sofern es diese nicht gibt, und dann deinen Funktionsprototypen schreiben. Danach kannst du die Funktion aufrufen.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Ivo
Beiträge: 26
Registriert: Fr Sep 26, 2014 3:54 pm

Re: Unmanaged Dll C++ Funktionen in C Scharp einbinden

Beitrag von Ivo » Fr Jun 24, 2016 9:23 pm

Stimmt die Seite habe mich heute gespeichert aber ich checke immer noch nicht genau wie ich es machen muss. Ein einfaches Bsp. wäre super :?

Code: Alles auswählen

int Toolbox::Initialize(LPCSTR systemPath, LPCSTR license, DLL_LogFunc* logFunc)
{
	if (m_initialize) return m_initialize((char*)systemPath,(char*)license,logFunc);
	return -1;
}
LPCSTR soweit wie ich gelesen habe, ist ein daten Type und entspricht ein char [ ] in C Sharp. DLL_LOGFung* ist ein pointer :?:
keine Ahnung :(

Antworten