Dll in C++/CLI Windows Forms Application einbinden
-
hallo,
benutze Visual Studio 2005 und möchte eine eigen geschriebene DLL in eine Windows Forms Application einbinden. Bisher habe ich mal folgendes Bsp. ausgeführt:
http://msdn.microsoft.com/de-de/library/ms235636(v=vs.80).aspx
Das hat auch funktioniert. Nun möchte ich aber keine Konsolenanwendung. Habe also meine DLL mittels: C++: CLR: CLR Empty Project erstellt; Mit "Add new Item" noch cpp und h - file hinzugefügt.
Unter Projekteigenschaften: Konfigurationseigenschaften: General: bei Konfigurationstyp: DLL angegegeben.
Das zweite "grundlegende" Projekt soll nur nen Button und ne richTextBox bekommen. Bei Buttonclick soll die Fkt. aus der DLL ausgeführt werden und das Ergebnis bei der richTextBox ausgegeben werden.
Meine Anwendung liegt im gleichen Ordner wie DLL. Außerdem habe meine DLL bei "Add new References" hinzugefügt; bei Konfigurationseigenschaften: C/C++: Additional Include Directories noch den Pfad zu meiner h- file der DLL angegeben; bei Debugging: Environment: PATH=<path to Addition_CLR_DLL.dll file> hinzugefügt
Hier mal mein Code:
DLL - Header:// Addition_CLR.h extern "C" __declspec(dllexport) double addition();
DLL - Source:
// Addition_CLR.cpp #include "Addition_CLR.h" double addition() { return 10+20; }
Ich weiß, nicht sehr sinnvoll, aber egal. Wie ihr seht, soll es c - Code sein.
Anwendung - Form1.h ... auszugsweise
#pragma once #include "Addition_CLR.h" namespace Addition_CLR_WFA { ... #pragma region ... #pragma endregion private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { } private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { double summe=addition(); richTextBox1->Text=System::Convert::ToString(summe); } }; }
Das funtioniert leider nicht:
Error 1 error C3389: __declspec(dllexport) cannot be used with /clr:pure or /clr:safe D:\Mustermann\Test\AdditionAnwendung2\Addition_CLR_DLL\Addition_CLR.h 4Error 2 error C3395: 'addition' : __declspec(dllexport) cannot be applied to a function with the __clrcall calling convention D:\Mustermann\Test\AdditionAnwendung2\Addition_CLR_DLL\Addition_CLR.h 4
Habe schon viel rumgelesen, aber nichts richtiges gefunden. Wäre super, wenn ihr mir helfen könntet.