Advanced   Java   Services Erstellen einer DLL mit VisualStudio



Erstellen einer DLL mit VisualStudio 2017

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.





Schritt 1: Anlegen eines leeren dll-Projekts

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.

missing step-02.jpg

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.

missing step-03.jpg

Jetzt wird natürlich DLL gewählt.

missing step-04.jpg

Damit wird automatisch Precompiled header angewählt.

missing step-05.jpg

Deshalb wird als erstes Precompiled header abgewählt.

missing step-06.jpg

Nun können wir DLL anwählen. Vertauscht man diese Reihenfolge kann man Precompiled header nicht mehr abwählen!

missing step-07.jpg

Auf diese Weise erhalten wir ein wirklich leeres Projekt.

missing step-08.jpg

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.

missing step-09.jpg

Hier die Implementierung.

missing step-10.jpg

Ü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.

missing step-11.jpg

Ein Ausschnitt aus dem Debug-Verzeichnis.

missing step-12.jpg

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;
}