Advanced Java Services | Erstellen einer DLL mit VisualStudio |
Hier wird gezeigt, wie man mit Visual Studio eine dll erstellen kann und sie verwendet. Es werden zwei Projekte angelegt, eines zum Erstellen der dll, ein zweites wird dann diese dll verwenden.
Solution -> Add -> New Project
Der Name des Projects ist beliebig wählbar, allerdings wird der Name des Projektes auch automatisch der Name der dll, darauf sollte man achten. Hier wird custom-dll gewählt.
Wir wollen die MS-Erweiterungen zu C/C++ ausschalten und bei Standard C/C++ bleiben.
Damit bleiben wir kompatibel zu anderen IDEs und Betriebssystemen. Daher wählen wir hier Next.
Jetzt wird natürlich DLL gewählt.
Damit wird automatisch Precompiled header angewählt.
Deshalb wird als erstes Precompiled header abgewählt.
Nun können wir DLL anwählen. Vertauscht man diese Reihenfolge kann man Precompiled header nicht mehr abwählen!
Auf diese Weise erhalten wir ein wirklich leeres Projekt.
Nun legen wir mit Ctrl-Shift-A eine neue Headerdatei an
und Schreiben etwa die Deklaration einer Funktions und einer Klasse.
Der Namespace ist optional. Der Vorspann __declspec(dllexport) obligatorisch.
Hier die Implementierung.
Über das Kontextmenu erstellen wir einen Build. Man sieht, daß custom-dll.dll
und custom-dll.lib im Debug -Verzeichnis der Solution abgelegt werden.
Es entsteht keine echte Library, hier werden nur die Namen der Funktionen gespeichert.
Ein Ausschnitt aus dem Debug-Verzeichnis.
Hier noch der Text des Headers, wenn man das Beispiel kopieren will:
#ifndef _TEST_H_ #define _TEST_H #include <iostream> #include <string> using namespace std; namespace test { // deklaration einer funktion für eine dll __declspec(dllexport) void foo(string msg); // deklaration einer klasse für eine dll class TestClass { private: int id; public: __declspec(dllexport) TestClass(); //constructor __declspec(dllexport) void setID(int val); __declspec(dllexport) int getID(); }; } /* __declspec(dllexport) // notwendig nur damit wird sowohl eine dll-create.dll und eine dll-create.lib erzeugt Add -> New Project -> Win32Project -> Namen vergeben -> Ok-Button drücken -> Next-Button drücken -> dann ZUERST DLL wählen -> dann precompiled header aushaken -> dann empty project jetzt kann man class und functions in headers deklarieren und in cpp implementieren */ #endif // !_TEST_H_
Hier noch der Text des CPP-Datei, wenn man das Beispiel kopieren will:
#include "test.h" using namespace std; void test::foo(string msg) { std::cout << msg << std::endl; } test::TestClass::TestClass() { id = 345; } void test::TestClass::setID(int val) { id = val; } int test::TestClass::getID() { return id; }