<?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[Problem mit Lib und *.h]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe erstmals versucht eine lib zu schreiben und zu verwenden.<br />
Leider erhalte ich den Fehler:</p>
<blockquote>
<p>preloader error LNK2019: Nicht aufgelöstes externes Symbol '&quot;void __cdecl myfunc::google(class ATL::CStringT&lt;char,class StrTraitMFC&lt;char,class ATL::ChTraitsCRT&lt;char&gt; &gt; &gt;)&quot; (?google@myfunc@@YAXV?<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>C</mi><mi>S</mi><mi>t</mi><mi>r</mi><mi>i</mi><mi>n</mi><mi>g</mi><mi>T</mi><mi mathvariant="normal">@</mi><mi>D</mi><mi>V</mi><mo>?</mo></mrow><annotation encoding="application/x-tex">CStringT@DV?</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="strut" style="height:0.69444em;"></span><span class="strut bottom" style="height:0.8888799999999999em;vertical-align:-0.19444em;"></span><span class="base textstyle uncramped"><span class="mord mathit" style="margin-right:0.07153em;">C</span><span class="mord mathit" style="margin-right:0.05764em;">S</span><span class="mord mathit">t</span><span class="mord mathit" style="margin-right:0.02778em;">r</span><span class="mord mathit">i</span><span class="mord mathit">n</span><span class="mord mathit" style="margin-right:0.03588em;">g</span><span class="mord mathit" style="margin-right:0.13889em;">T</span><span class="mord mathrm">@</span><span class="mord mathit" style="margin-right:0.02778em;">D</span><span class="mord mathit" style="margin-right:0.22222em;">V</span><span class="mclose">?</span></span></span></span>StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@@Z)', verwiesen in Funktion '&quot;public: void __thiscall CpreloaderDlg::OnBnClickedButton1(void)&quot; (?OnBnClickedButton1@CpreloaderDlg@@QAEXXZ)'</p>
</blockquote>
<p>Ich sage am besten erstmal was ich gemacht habe:</p>
<p>1. die Lib als Win32-Projekt (statische Lib) mit MFC Unterstützung und vorkompilierten Headern.</p>
<p>Die mycheck.h vom Projekt prex sieht so aus:</p>
<pre><code class="language-cpp">#ifndef MFCEXT_H_
#define MFCEXT_H_

namespace myfunc
{
void google(CString x);

}

#endif // MFCEXT_H
</code></pre>
<p>In der mycheck.cpp steht folgendes:</p>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;
#include &quot;mycheck.h&quot;

namespace myfunc
	{
	void google(CString x)
		{
		x=&quot;lib-test!&quot;;
		}

	}
</code></pre>
<p>In meiner Anwendung selbst definiere ich es dann so, nachdem prex.lib und mycheck.h im Projektverzeichnis gelandet sind und der Header ins Projekt<br />
aufgenommen wurde (prex.lib ist in den Linker eingetragen!):</p>
<pre><code class="language-cpp">#include &quot;mycheck.h&quot;

//dann im buttonereignis
myfunc::google(&quot;abc&quot;);
</code></pre>
<p>Was mache ich denn da falsch? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> Der Sinn der Funktion sei mal dahingestellt, es geht mir nur ums Begreifen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/178945/problem-mit-lib-und-h</link><generator>RSS for Node</generator><lastBuildDate>Sun, 19 Apr 2026 00:03:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/178945.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 16 Apr 2007 21:08:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Lib und *.h on Mon, 16 Apr 2007 21:08:29 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe erstmals versucht eine lib zu schreiben und zu verwenden.<br />
Leider erhalte ich den Fehler:</p>
<blockquote>
<p>preloader error LNK2019: Nicht aufgelöstes externes Symbol '&quot;void __cdecl myfunc::google(class ATL::CStringT&lt;char,class StrTraitMFC&lt;char,class ATL::ChTraitsCRT&lt;char&gt; &gt; &gt;)&quot; (?google@myfunc@@YAXV?<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>C</mi><mi>S</mi><mi>t</mi><mi>r</mi><mi>i</mi><mi>n</mi><mi>g</mi><mi>T</mi><mi mathvariant="normal">@</mi><mi>D</mi><mi>V</mi><mo>?</mo></mrow><annotation encoding="application/x-tex">CStringT@DV?</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="strut" style="height:0.69444em;"></span><span class="strut bottom" style="height:0.8888799999999999em;vertical-align:-0.19444em;"></span><span class="base textstyle uncramped"><span class="mord mathit" style="margin-right:0.07153em;">C</span><span class="mord mathit" style="margin-right:0.05764em;">S</span><span class="mord mathit">t</span><span class="mord mathit" style="margin-right:0.02778em;">r</span><span class="mord mathit">i</span><span class="mord mathit">n</span><span class="mord mathit" style="margin-right:0.03588em;">g</span><span class="mord mathit" style="margin-right:0.13889em;">T</span><span class="mord mathrm">@</span><span class="mord mathit" style="margin-right:0.02778em;">D</span><span class="mord mathit" style="margin-right:0.22222em;">V</span><span class="mclose">?</span></span></span></span>StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@@Z)', verwiesen in Funktion '&quot;public: void __thiscall CpreloaderDlg::OnBnClickedButton1(void)&quot; (?OnBnClickedButton1@CpreloaderDlg@@QAEXXZ)'</p>
</blockquote>
<p>Ich sage am besten erstmal was ich gemacht habe:</p>
<p>1. die Lib als Win32-Projekt (statische Lib) mit MFC Unterstützung und vorkompilierten Headern.</p>
<p>Die mycheck.h vom Projekt prex sieht so aus:</p>
<pre><code class="language-cpp">#ifndef MFCEXT_H_
#define MFCEXT_H_

namespace myfunc
{
void google(CString x);

}

#endif // MFCEXT_H
</code></pre>
<p>In der mycheck.cpp steht folgendes:</p>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;
#include &quot;mycheck.h&quot;

namespace myfunc
	{
	void google(CString x)
		{
		x=&quot;lib-test!&quot;;
		}

	}
</code></pre>
<p>In meiner Anwendung selbst definiere ich es dann so, nachdem prex.lib und mycheck.h im Projektverzeichnis gelandet sind und der Header ins Projekt<br />
aufgenommen wurde (prex.lib ist in den Linker eingetragen!):</p>
<pre><code class="language-cpp">#include &quot;mycheck.h&quot;

//dann im buttonereignis
myfunc::google(&quot;abc&quot;);
</code></pre>
<p>Was mache ich denn da falsch? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> Der Sinn der Funktion sei mal dahingestellt, es geht mir nur ums Begreifen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267394</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267394</guid><dc:creator><![CDATA[Dito]]></dc:creator><pubDate>Mon, 16 Apr 2007 21:08:29 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Lib und *.h on Tue, 17 Apr 2007 05:17:26 GMT]]></title><description><![CDATA[<p>Guten Morgen,</p>
<p>habe noch eine weitere Frage.<br />
Wo ist der Unterschied, ob ich:</p>
<p>1. nur eine DLL nutze<br />
2. eine dll mit lib<br />
oder<br />
3. eine lib. mit .h</p>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267449</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267449</guid><dc:creator><![CDATA[Dito]]></dc:creator><pubDate>Tue, 17 Apr 2007 05:17:26 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Lib und *.h on Tue, 17 Apr 2007 06:08:32 GMT]]></title><description><![CDATA[<p>Versuche keine komplexen Objekte und keine Objekte die als Templates vorliegen an eine DLL zu übergeben. CString verbietet sich also. Das Problem ist dass sobald ein andere Compiler oder sogar nur ein anderes SP eingesetzt wird es evtl. kracht.</p>
<p>zu 1. ohne Lib musst Du LoadLibrary und GetProcAddress verwenden. Klassen kannst Du dann z.B. nicht exportieren oder in eine Lib packen.<br />
zu 2. ohne Header Datei geht nichts. lib+dll alleine bringt nichts.<br />
zu 3. Da ist keine DLL im Spiel. Das ist statisches linken.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267468</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267468</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 17 Apr 2007 06:08:32 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Lib und *.h on Tue, 17 Apr 2007 09:22:26 GMT]]></title><description><![CDATA[<p>Wozu ist dann die MFC-Unterstützung bei statischem Linken noch gut?<br />
Dann muss man doch auch CString in ihr verwenden können?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267579</guid><dc:creator><![CDATA[Frager]]></dc:creator><pubDate>Tue, 17 Apr 2007 09:22:26 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Lib und *.h on Tue, 17 Apr 2007 11:27:11 GMT]]></title><description><![CDATA[<p>Dann hast Du die MFC Komponenten in Diner EXE. Du kannst diese Objekte dann aber nicht einfach an eine DLL weitergeben, denn dort wird für diese Objekte evtl. ein andere Code verwendet.</p>
<p>Über DLL Grenzen hinweg sollten möglichst nur elementare Daten übergeben werden und in keinem Flal sollten Zeiger in einem Modul allokiert und in einem anderen freigegeben werden. Das genau aber passiert mit einem CString Objekt!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267672</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267672</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 17 Apr 2007 11:27:11 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Lib und *.h on Tue, 17 Apr 2007 17:51:06 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe es aus einem Tutorial gezogen. Genauer gesagt von hier:</p>
<p><a href="http://www.functionx.com/visualc/libraries/mfcstaticlib.htm" rel="nofollow">http://www.functionx.com/visualc/libraries/mfcstaticlib.htm</a><br />
(Vielleicht hilft es mal jemandem weiter?)</p>
<p>Ich nutze ja gar keine DLL sondern nehme die statische Methode (nur lib und header).</p>
<p>Ist das Beispiel dann falsch, bzw. sollte man also NIE und in keinem Fall<br />
einen CString beim statischen linken nutzen? *verwirttsei*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267916</guid><dc:creator><![CDATA[Dito]]></dc:creator><pubDate>Tue, 17 Apr 2007 17:51:06 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Lib und *.h on Wed, 18 Apr 2007 04:30:52 GMT]]></title><description><![CDATA[<p>Sorry dass ich pushe, aber ich meinte diesen Teil der Lib (siehe Link):</p>
<pre><code class="language-cpp">namespace MFCExtensions
{
	BOOL IsNatural(const CString Str) //CString!!
	{
//..
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1268082</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1268082</guid><dc:creator><![CDATA[Dito]]></dc:creator><pubDate>Wed, 18 Apr 2007 04:30:52 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Lib und *.h on Wed, 18 Apr 2007 06:07:27 GMT]]></title><description><![CDATA[<p>Wenn Du CSTring als Übergabeparameter in einer DLL verwendest, dann musst Du garantieren, dass alle Compiler Einstellungen und verwendeten SP's in beinden Programmen identisch sind. Und zwingend müssen beide Projekte die MFC als shared DLL verwenden!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1268097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1268097</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 18 Apr 2007 06:07:27 GMT</pubDate></item></channel></rss>