<?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[Funktion in eigene Quellcodedatei auslagern]]></title><description><![CDATA[<p>Ich habe eine Funktion, die ich gerne in eine eigenen Quellcodedatei auslagern würde, damit ich sie besser wiederverwenden kann:</p>
<pre><code class="language-cpp">DWORD SysErrorMessage(const int ErrorCode, wchar_t* szBuf, const DWORD ArrayLength)
{
   DWORD result = 0;
   LPVOID lpMsgBuf = NULL;

   result = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, ErrorCode,
                     MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPWSTR)&amp;lpMsgBuf, 0, NULL);

   if (result &lt;= ArrayLength)
   {
      wsprintf(szBuf, (LPWSTR)lpMsgBuf);
   }
   else
   {
      result = (DWORD)-1; // ErrCode
   } 

   LocalFree(lpMsgBuf);

   return result;
}
</code></pre>
<p>Das steht in MpuTools.cpp drinne. Dazu die Heder-Datei:</p>
<pre><code class="language-cpp">DWORD SysErrorMessage(const int ErrorCode, wchar_t* szBuf, const DWORD ArrayLength);
</code></pre>
<p>Das ist der Inhalt von MpuTools.h.</p>
<p>Das Hauptprogramm sieht so aus:</p>
<pre><code class="language-cpp">#include &lt;stdio.h&gt;
#include &lt;windows.h&gt;
#include &quot;MpuTools.h&quot;

int main(int argc, char* argv[])
{
   TCHAR szBuf[80];
   ZeroMemory(szBuf, sizeof(szBuf));

   if (SysErrorMessage(5, szBuf, sizeof(szBuf)) &gt;0)
   {
      wprintf(L&quot;%s&quot;, szBuf);
	  MessageBoxW(0, szBuf, L&quot;Test&quot;, 0);
   }

   return 0;
}
</code></pre>
<p>Leider bringt mir das VS beim Kompilieren die Meldung:</p>
<blockquote>
<p>Fehler 1 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol &quot;&quot;unsigned long __cdecl SysErrorMessage(int,wchar_t *,unsigned long)&quot; (?SysErrorMessage@@YAKHPA_WK@Z)&quot; in Funktion &quot;_main&quot;. MpuTools_Test.obj</p>
</blockquote>
<p>Was mache ich falsch oder was fehlt noch? Es sollte eiegntlich nicht kompilerspezifisch sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/159255/funktion-in-eigene-quellcodedatei-auslagern</link><generator>RSS for Node</generator><lastBuildDate>Thu, 10 Sep 2026 08:08:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/159255.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 13 Sep 2006 11:23:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktion in eigene Quellcodedatei auslagern on Wed, 13 Sep 2006 11:23:37 GMT]]></title><description><![CDATA[<p>Ich habe eine Funktion, die ich gerne in eine eigenen Quellcodedatei auslagern würde, damit ich sie besser wiederverwenden kann:</p>
<pre><code class="language-cpp">DWORD SysErrorMessage(const int ErrorCode, wchar_t* szBuf, const DWORD ArrayLength)
{
   DWORD result = 0;
   LPVOID lpMsgBuf = NULL;

   result = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, ErrorCode,
                     MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPWSTR)&amp;lpMsgBuf, 0, NULL);

   if (result &lt;= ArrayLength)
   {
      wsprintf(szBuf, (LPWSTR)lpMsgBuf);
   }
   else
   {
      result = (DWORD)-1; // ErrCode
   } 

   LocalFree(lpMsgBuf);

   return result;
}
</code></pre>
<p>Das steht in MpuTools.cpp drinne. Dazu die Heder-Datei:</p>
<pre><code class="language-cpp">DWORD SysErrorMessage(const int ErrorCode, wchar_t* szBuf, const DWORD ArrayLength);
</code></pre>
<p>Das ist der Inhalt von MpuTools.h.</p>
<p>Das Hauptprogramm sieht so aus:</p>
<pre><code class="language-cpp">#include &lt;stdio.h&gt;
#include &lt;windows.h&gt;
#include &quot;MpuTools.h&quot;

int main(int argc, char* argv[])
{
   TCHAR szBuf[80];
   ZeroMemory(szBuf, sizeof(szBuf));

   if (SysErrorMessage(5, szBuf, sizeof(szBuf)) &gt;0)
   {
      wprintf(L&quot;%s&quot;, szBuf);
	  MessageBoxW(0, szBuf, L&quot;Test&quot;, 0);
   }

   return 0;
}
</code></pre>
<p>Leider bringt mir das VS beim Kompilieren die Meldung:</p>
<blockquote>
<p>Fehler 1 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol &quot;&quot;unsigned long __cdecl SysErrorMessage(int,wchar_t *,unsigned long)&quot; (?SysErrorMessage@@YAKHPA_WK@Z)&quot; in Funktion &quot;_main&quot;. MpuTools_Test.obj</p>
</blockquote>
<p>Was mache ich falsch oder was fehlt noch? Es sollte eiegntlich nicht kompilerspezifisch sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1136537</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1136537</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Wed, 13 Sep 2006 11:23:37 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion in eigene Quellcodedatei auslagern on Wed, 13 Sep 2006 11:26:27 GMT]]></title><description><![CDATA[<p>Du musst die &quot;eigene Quellcodedatei&quot; auch zusammen mit dem &quot;Hauptprogramm&quot; im einem Projekt haben (damit beides zusammen gelinkt wird).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1136543</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1136543</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 13 Sep 2006 11:26:27 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion in eigene Quellcodedatei auslagern on Wed, 13 Sep 2006 11:38:05 GMT]]></title><description><![CDATA[<p>Was heißt &quot;zusammen in einem Projekt&quot;?<br />
Wie stelle ich das beim VS ein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1136553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1136553</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Wed, 13 Sep 2006 11:38:05 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion in eigene Quellcodedatei auslagern on Wed, 13 Sep 2006 11:41:50 GMT]]></title><description><![CDATA[<p>Projekt-&gt;Hinzufügen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1136559</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1136559</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 13 Sep 2006 11:41:50 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion in eigene Quellcodedatei auslagern on Wed, 13 Sep 2006 12:00:44 GMT]]></title><description><![CDATA[<p>Ah, danke, ich war der Meinung, wenn ich die entsprechende Header_Datei includiere, dass er den Rest alleine macht.</p>
<p>Jetzt hab eich allerdings in der Header-Datei und in der main.cpp windows.h inkludiert, also eigentlich doppelt. Was macht man da? Es kompiliert und läuft, aber ist irgendwie unschön.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1136573</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1136573</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Wed, 13 Sep 2006 12:00:44 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion in eigene Quellcodedatei auslagern on Wed, 13 Sep 2006 12:26:36 GMT]]></title><description><![CDATA[<p>Wenn man Headerdateien entwickelt sollte man sich von Anfang an angewöhnen Include-Guards zu benutzen, die verhindern dass die eigenen Headerdateien mehrfach eingebunden werden. Microsoft hat das natürlich bei windows.h genauso gemacht, so dass windows.h in Wirklichkeit nur beim ersten Mal komplett durchlaufen wird.</p>
<p>Was eigene Projekte angeht habe ich mir angewöhnt, in Headern so wenig wie möglich zu inkludieren, also möglichst oft mit Foward-Deklarationen zu arbeiten. Ansonsten inkludiere ich bestimmte Header dort wo sie gebraucht werden, ohne Rücksicht darauf durch welche ebenfalls inkludierte Datei sie indirekt auch schon inkludiert sein könnte. Denn wenn man Rücksicht auf den Include-Baum nehmen würde, würde man sehr schnell völlig die Übersicht verlieren...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1136593</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1136593</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 13 Sep 2006 12:26:36 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion in eigene Quellcodedatei auslagern on Wed, 13 Sep 2006 12:33:16 GMT]]></title><description><![CDATA[<p>Dank für die Tipps.</p>
<p>In der Header-datei habe ich natürlcih nichts inkludiert, aber in der zugehörigen Quellcodedatei, aber das läßt sich wohl nicht vermeiden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1136601</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1136601</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Wed, 13 Sep 2006 12:33:16 GMT</pubDate></item></channel></rss>