<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Verändisproblem bei DLL-Dateien]]></title><description><![CDATA[<p>Ich möchte eine einfache DLL-Datei programmieren, wo sich einige Funktionen befindetn sollen, die dann abschließend von anderen Anwendung aufrufen kann. Dazu habe ich ein Beispiel, wie man das umsetzen kann:</p>
<pre><code class="language-cpp">// Die Header-Datei
#ifndef __MAIN_H__
#define __MAIN_H__

#include &lt;windows.h&gt;

/*  To use this exported function of dll, include this header
 *  in your project.
 */

#ifdef BUILD_DLL
    #define DLL_EXPORT __declspec(dllexport)
#else
    #define DLL_EXPORT __declspec(dllimport)
#endif

#ifdef __cplusplus
extern &quot;C&quot;
{
#endif

void DLL_EXPORT SomeFunction(const LPCSTR sometext);

#ifdef __cplusplus
}
#endif

#endif // __MAIN_H__
</code></pre>
<p>Was bedeutet das nun genau? Irgendwie verstehe ich das nicht. Kann mir das jemand erklären? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/240917/verändisproblem-bei-dll-dateien</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 17:44:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/240917.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 13 May 2009 13:49:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verändisproblem bei DLL-Dateien on Wed, 13 May 2009 13:49:20 GMT]]></title><description><![CDATA[<p>Ich möchte eine einfache DLL-Datei programmieren, wo sich einige Funktionen befindetn sollen, die dann abschließend von anderen Anwendung aufrufen kann. Dazu habe ich ein Beispiel, wie man das umsetzen kann:</p>
<pre><code class="language-cpp">// Die Header-Datei
#ifndef __MAIN_H__
#define __MAIN_H__

#include &lt;windows.h&gt;

/*  To use this exported function of dll, include this header
 *  in your project.
 */

#ifdef BUILD_DLL
    #define DLL_EXPORT __declspec(dllexport)
#else
    #define DLL_EXPORT __declspec(dllimport)
#endif

#ifdef __cplusplus
extern &quot;C&quot;
{
#endif

void DLL_EXPORT SomeFunction(const LPCSTR sometext);

#ifdef __cplusplus
}
#endif

#endif // __MAIN_H__
</code></pre>
<p>Was bedeutet das nun genau? Irgendwie verstehe ich das nicht. Kann mir das jemand erklären? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709979</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709979</guid><dc:creator><![CDATA[DerVonNebenan]]></dc:creator><pubDate>Wed, 13 May 2009 13:49:20 GMT</pubDate></item><item><title><![CDATA[Reply to Verändisproblem bei DLL-Dateien on Wed, 13 May 2009 14:11:10 GMT]]></title><description><![CDATA[<p>Wenn DLL-Funktionen von außerhalb aufgerufen werden können sollen, dann musst du sie exportieren. Das macht man in der DLL mit __declspec(dllexport). Auf der anderen Seite (also in einer externen Anwendung) musst du stattdessen __declspec(dllimport) verwenden. Um dir das Denken abzunehmen ( <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> ), wird hier DLL_EXPORT definiert. Abhängig davon, ob du dich in der DLL befindest oder nicht, wird eben dllimport oder dllexport vom Präprozessor in den Code eingefügt. So musst du immer nur DLL_EXPORT benutzen.</p>
<p>Da wir im C++-Forum sind, schon mal der Tipp: Informier dich mal, was es mit 'extern &quot;C&quot;' auf sich hat.</p>
<p>EDIT: Ach, extern &quot;C&quot; wurde ja schon berücksichtigt. Hatte ich übersehen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709992</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709992</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Wed, 13 May 2009 14:11:10 GMT</pubDate></item><item><title><![CDATA[Reply to Verändisproblem bei DLL-Dateien on Wed, 13 May 2009 14:09:57 GMT]]></title><description><![CDATA[<p>Das gehört eigentlich ins Forum WinAPI, mit ANSI C++ hat das nichts zu tun.</p>
<p>Mit</p>
<pre><code class="language-cpp">#ifdef BUILD_DLL
    #define DLL_EXPORT __declspec(dllexport)
#else
    #define DLL_EXPORT __declspec(dllimport)
#endif
</code></pre>
<p>sagst du deinem Compiler, dass er eine Funktion mit diesem Präfix in eine DLL schreiben soll. __declspec(dllexport) also, um die Deklaration der Funktionen/Klassen in eine DLL auszulagern. Hier legt der Autor ein paar kürzere Makros dafür fest.</p>
<pre><code class="language-cpp">#ifdef __cplusplus
extern &quot;C&quot;
{
#endif

void DLL_EXPORT SomeFunction(const LPCSTR sometext);

#ifdef __cplusplus
}
#endif
</code></pre>
<p>Hier hat der Autor ab und zu ein paar Präprozessor-Anweisungen, z.B. wenn es ein C++-Compiler ist, der das übersetzt, dann soll das durch extern &quot;C&quot; { } als C-Code markiert sein, bei Klassen ist das natürlich nicht der Fall. Dann hat er da noch eine DLL-Funktion.<br />
Wenn du dann den Code compilierst hast du am Ende 2 Dateien, eine DLL mit den Deklarationen, einer Tabelle aller Export-Funktionen deines Programms uns eine LIB, die enthält die Implementierung der Funktionen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709993</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709993</guid><dc:creator><![CDATA[Ad aCTa]]></dc:creator><pubDate>Wed, 13 May 2009 14:09:57 GMT</pubDate></item></channel></rss>