<?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[dll lässt sich nicht aufrufen]]></title><description><![CDATA[<p>Soo, nun hab ich meine DLL erstellt..<br />
Sie sieht so aus :</p>
<pre><code class="language-cpp">// scrs.cpp : Definiert den Einsprungpunkt für die DLL-Anwendung.
#include &lt;windows.h&gt;

BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
					 )
{ 
    return TRUE;
}

int SaveBitmap(HANDLE aBmp, int width, int height, char *filename) 
{ 

    BITMAPINFO *bi  = (BITMAPINFO*) aBmp; 
    void *dibvalues = NULL; 
    HANDLE fileHandle; 

    BITMAPFILEHEADER bmfh; 

    DWORD bytes_write; 
    DWORD bytes_written; 

    ZeroMemory(&amp;bmfh,sizeof(BITMAPFILEHEADER)); 
    bmfh.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER); 
    bmfh.bfSize=(bi-&gt;bmiHeader.biSizeImage )+sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER); 
        bmfh.bfType=0x4d42; 
        bmfh.bfReserved1 = 0; 
        bmfh.bfReserved2 = 0; 

    fileHandle=CreateFile(filename,GENERIC_READ | GENERIC_WRITE,(DWORD)0,NULL, 
                                                    CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,(HANDLE) NULL); 
    if (fileHandle==INVALID_HANDLE_VALUE) 
    { 
        OutputDebugString(&quot;CreateFile failed!\n&quot;); 
        return 0; 
    } 

        // Write the BITMAPFILEHEADER 
        bytes_write=sizeof(BITMAPFILEHEADER); 
    if (!WriteFile(fileHandle,(void*)&amp;bmfh,bytes_write,&amp;bytes_written,NULL)) 
    { 
        OutputDebugString(&quot;WriteFile failed!\n&quot;); 
        return 0; 
    } 

        //Write the BITMAPINFOHEADER 
    bytes_write=sizeof(BITMAPINFOHEADER); 
    if (!WriteFile(fileHandle,(void*) &amp;bi-&gt;bmiHeader ,bytes_write,&amp;bytes_written,NULL)) 
    { 
        OutputDebugString(&quot;WriteFile failed!\n&quot;); 
        return 0; 
    } 

        //Write the Color Index Array??? 
        bytes_write= bi-&gt;bmiHeader.biSizeImage;//3*bmih.biHeight*bmih.biWidth; 
    if (!WriteFile(fileHandle,(void*)bi-&gt;bmiColors,bytes_write,&amp;bytes_written,NULL)) 
    { 
        OutputDebugString(&quot;WriteFile failed!\n&quot;); 
        return 0; 
    } 

    CloseHandle(fileHandle); 

    return 1; 
}  

__declspec ( dllexport ) int CALLBACK SaveClipboard(HWND hWnd, char *filename)
{
   HANDLE   hBitmap;
   DEVMODE   Dev;

    /* ClipBoard laden */
   OpenClipboard(hWnd);
   hBitmap = GetClipboardData(CF_DIB);
   CloseClipboard();   

   /* Bildschirmeigenschaften holen */   
   Dev.dmSize = sizeof(DEVMODE);
   EnumDisplaySettings (NULL, ENUM_CURRENT_SETTINGS, &amp;Dev);

   /* Bild sichern */
   SaveBitmap (hBitmap, Dev.dmPelsWidth, Dev.dmPelsHeight, filename);

   return 0;
}
</code></pre>
<p>die Header ist immernoch</p>
<pre><code class="language-cpp">#ifndef SCRS_H
#define SCRS_H

#include &lt;windows.h&gt;

__declspec ( dllexport ) int CALLBACK SaveClipboard(HWND hWnd, char *FileName);

#endif
</code></pre>
<p>und aufrufen will ich das Ganze so :</p>
<pre><code class="language-cpp">// dlltest.cpp : Definiert den Einsprungpunkt für die Anwendung.
//

#include &quot;windows.h&quot;
#include &quot;scrs.h&quot;

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow )
{
 	// ZU ERLEDIGEN: Fügen Sie hier den Code ein.

       SaveClipboard (NULL, &quot;test.bmp&quot;);

	return 0;
}
</code></pre>
<p>beim Linken hat das tolle Studio diese Meinung zu meinem Kot- äeh Code:</p>
<blockquote>
<p>--------------------Konfiguration: dlltest - Win32 Debug--------------------<br />
Kompilierung läuft...<br />
dlltest.cpp<br />
Linker-Vorgang läuft...<br />
dlltest.obj : error LNK2001: Nichtaufgeloestes externes Symbol &quot;int __stdcall SaveClipboard(struct HWND__ *,char *)&quot; (?SaveClipboard@@YGHPAUHWND__@@PAD@Z)<br />
Debug/dlltest.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise<br />
Fehler beim Ausführen von link.exe.</p>
<p>dlltest.exe - 2 Fehler, 0 Warnung(en)</p>
</blockquote>
<p>Hab schon etwas rumgespielt, aber ich finde weder ne Einstellung die ich vornehmen müsste, noch nen Fehler (wobei ich in Sachen DLL nen Laie bin)...</p>
<p>Die DLL hab ich ins Verzeichnis kopiert in dem auch meine exe läuft...</p>
<p>Was mach ich falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/86631/dll-lässt-sich-nicht-aufrufen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Apr 2026 18:30:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/86631.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 21 Sep 2004 11:33:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to dll lässt sich nicht aufrufen on Tue, 21 Sep 2004 11:33:16 GMT]]></title><description><![CDATA[<p>Soo, nun hab ich meine DLL erstellt..<br />
Sie sieht so aus :</p>
<pre><code class="language-cpp">// scrs.cpp : Definiert den Einsprungpunkt für die DLL-Anwendung.
#include &lt;windows.h&gt;

BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
					 )
{ 
    return TRUE;
}

int SaveBitmap(HANDLE aBmp, int width, int height, char *filename) 
{ 

    BITMAPINFO *bi  = (BITMAPINFO*) aBmp; 
    void *dibvalues = NULL; 
    HANDLE fileHandle; 

    BITMAPFILEHEADER bmfh; 

    DWORD bytes_write; 
    DWORD bytes_written; 

    ZeroMemory(&amp;bmfh,sizeof(BITMAPFILEHEADER)); 
    bmfh.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER); 
    bmfh.bfSize=(bi-&gt;bmiHeader.biSizeImage )+sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER); 
        bmfh.bfType=0x4d42; 
        bmfh.bfReserved1 = 0; 
        bmfh.bfReserved2 = 0; 

    fileHandle=CreateFile(filename,GENERIC_READ | GENERIC_WRITE,(DWORD)0,NULL, 
                                                    CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,(HANDLE) NULL); 
    if (fileHandle==INVALID_HANDLE_VALUE) 
    { 
        OutputDebugString(&quot;CreateFile failed!\n&quot;); 
        return 0; 
    } 

        // Write the BITMAPFILEHEADER 
        bytes_write=sizeof(BITMAPFILEHEADER); 
    if (!WriteFile(fileHandle,(void*)&amp;bmfh,bytes_write,&amp;bytes_written,NULL)) 
    { 
        OutputDebugString(&quot;WriteFile failed!\n&quot;); 
        return 0; 
    } 

        //Write the BITMAPINFOHEADER 
    bytes_write=sizeof(BITMAPINFOHEADER); 
    if (!WriteFile(fileHandle,(void*) &amp;bi-&gt;bmiHeader ,bytes_write,&amp;bytes_written,NULL)) 
    { 
        OutputDebugString(&quot;WriteFile failed!\n&quot;); 
        return 0; 
    } 

        //Write the Color Index Array??? 
        bytes_write= bi-&gt;bmiHeader.biSizeImage;//3*bmih.biHeight*bmih.biWidth; 
    if (!WriteFile(fileHandle,(void*)bi-&gt;bmiColors,bytes_write,&amp;bytes_written,NULL)) 
    { 
        OutputDebugString(&quot;WriteFile failed!\n&quot;); 
        return 0; 
    } 

    CloseHandle(fileHandle); 

    return 1; 
}  

__declspec ( dllexport ) int CALLBACK SaveClipboard(HWND hWnd, char *filename)
{
   HANDLE   hBitmap;
   DEVMODE   Dev;

    /* ClipBoard laden */
   OpenClipboard(hWnd);
   hBitmap = GetClipboardData(CF_DIB);
   CloseClipboard();   

   /* Bildschirmeigenschaften holen */   
   Dev.dmSize = sizeof(DEVMODE);
   EnumDisplaySettings (NULL, ENUM_CURRENT_SETTINGS, &amp;Dev);

   /* Bild sichern */
   SaveBitmap (hBitmap, Dev.dmPelsWidth, Dev.dmPelsHeight, filename);

   return 0;
}
</code></pre>
<p>die Header ist immernoch</p>
<pre><code class="language-cpp">#ifndef SCRS_H
#define SCRS_H

#include &lt;windows.h&gt;

__declspec ( dllexport ) int CALLBACK SaveClipboard(HWND hWnd, char *FileName);

#endif
</code></pre>
<p>und aufrufen will ich das Ganze so :</p>
<pre><code class="language-cpp">// dlltest.cpp : Definiert den Einsprungpunkt für die Anwendung.
//

#include &quot;windows.h&quot;
#include &quot;scrs.h&quot;

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow )
{
 	// ZU ERLEDIGEN: Fügen Sie hier den Code ein.

       SaveClipboard (NULL, &quot;test.bmp&quot;);

	return 0;
}
</code></pre>
<p>beim Linken hat das tolle Studio diese Meinung zu meinem Kot- äeh Code:</p>
<blockquote>
<p>--------------------Konfiguration: dlltest - Win32 Debug--------------------<br />
Kompilierung läuft...<br />
dlltest.cpp<br />
Linker-Vorgang läuft...<br />
dlltest.obj : error LNK2001: Nichtaufgeloestes externes Symbol &quot;int __stdcall SaveClipboard(struct HWND__ *,char *)&quot; (?SaveClipboard@@YGHPAUHWND__@@PAD@Z)<br />
Debug/dlltest.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise<br />
Fehler beim Ausführen von link.exe.</p>
<p>dlltest.exe - 2 Fehler, 0 Warnung(en)</p>
</blockquote>
<p>Hab schon etwas rumgespielt, aber ich finde weder ne Einstellung die ich vornehmen müsste, noch nen Fehler (wobei ich in Sachen DLL nen Laie bin)...</p>
<p>Die DLL hab ich ins Verzeichnis kopiert in dem auch meine exe läuft...</p>
<p>Was mach ich falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/611789</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/611789</guid><dc:creator><![CDATA[DocJunioR]]></dc:creator><pubDate>Tue, 21 Sep 2004 11:33:16 GMT</pubDate></item><item><title><![CDATA[Reply to dll lässt sich nicht aufrufen on Tue, 21 Sep 2004 11:52:55 GMT]]></title><description><![CDATA[<p>Du musst die Lib-Datei, die beim Erstellen der DLL erzeugt wurde, mitlinken <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/611817</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/611817</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Tue, 21 Sep 2004 11:52:55 GMT</pubDate></item></channel></rss>