<?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[LNK2019 - Obwohl die Lib eingebunden ist, Header vorhanden... :(]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich verzweifle mal wieder. In meinem Programm binde ich eine LIB von einem OpenSource (Soar) ein.</p>
<pre><code class="language-cpp">#include &quot;sml_ClientKernel.h&quot;
#pragma comment (lib, &quot;ClientSML.lib&quot;)
</code></pre>
<p>Die LIB wurde zuvor einwandfrei kompiliert (also der OpenSource-Code). Wenn ich nun in meinem Projekt die LIB also einbinde (siehe oben) und die Methode CreateKernelInNewThread aufrufe.</p>
<pre><code class="language-cpp">pKernel = Kernel::CreateKernelInNewThread();
</code></pre>
<p>kommt es zu dem Linker-Fehler.</p>
<pre><code class="language-cpp">Strategies.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol &quot;&quot;public: static class sml::Kernel * __stdcall
sml::Kernel::CreateKernelInNewThread(char const *,int)&quot; (?CreateKernelInNewThread@Kernel@sml@@SGPAV12@PBDH@Z)&quot; in Funktion 
&quot;&quot;private: static void __stdcall Strategies::prepareWithSoar(void)&quot; (?prepareWithSoar@Strategies@@CGXXZ)&quot;.
</code></pre>
<p>Vielleicht noch ein paar Hinweise, um die Fehlersuche zu erleichtern <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>In der Headerdatei wird die Methode wie folgt deklariert:</p>
<pre><code class="language-cpp">static Kernel* CreateKernelInNewThread(char const* pLibraryName = kDefaultLibraryName, int portToListenOn = kDefaultSMLPort) ;
</code></pre>
<p>und in der Implementierungsdatei wie folgt definiert:</p>
<pre><code class="language-cpp">Kernel* Kernel::CreateKernelInNewThread(char const* pLibraryName, int portToListenOn)
{
  return CreateEmbeddedConnection(pLibraryName, false, false, portToListenOn) ;
}
</code></pre>
<p>Meine Zuweisung (pKernel) erfolgt an ein Attribut meiner Klasse und ist wie folgt deklariert</p>
<pre><code class="language-cpp">static Kernel* pKernel;
</code></pre>
<p>Bitte helft mir... ich verzweifle... danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/223300/lnk2019-obwohl-die-lib-eingebunden-ist-header-vorhanden</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Apr 2026 09:00:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/223300.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 24 Sep 2008 12:59:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to LNK2019 - Obwohl die Lib eingebunden ist, Header vorhanden... :( on Wed, 24 Sep 2008 12:59:14 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich verzweifle mal wieder. In meinem Programm binde ich eine LIB von einem OpenSource (Soar) ein.</p>
<pre><code class="language-cpp">#include &quot;sml_ClientKernel.h&quot;
#pragma comment (lib, &quot;ClientSML.lib&quot;)
</code></pre>
<p>Die LIB wurde zuvor einwandfrei kompiliert (also der OpenSource-Code). Wenn ich nun in meinem Projekt die LIB also einbinde (siehe oben) und die Methode CreateKernelInNewThread aufrufe.</p>
<pre><code class="language-cpp">pKernel = Kernel::CreateKernelInNewThread();
</code></pre>
<p>kommt es zu dem Linker-Fehler.</p>
<pre><code class="language-cpp">Strategies.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol &quot;&quot;public: static class sml::Kernel * __stdcall
sml::Kernel::CreateKernelInNewThread(char const *,int)&quot; (?CreateKernelInNewThread@Kernel@sml@@SGPAV12@PBDH@Z)&quot; in Funktion 
&quot;&quot;private: static void __stdcall Strategies::prepareWithSoar(void)&quot; (?prepareWithSoar@Strategies@@CGXXZ)&quot;.
</code></pre>
<p>Vielleicht noch ein paar Hinweise, um die Fehlersuche zu erleichtern <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>In der Headerdatei wird die Methode wie folgt deklariert:</p>
<pre><code class="language-cpp">static Kernel* CreateKernelInNewThread(char const* pLibraryName = kDefaultLibraryName, int portToListenOn = kDefaultSMLPort) ;
</code></pre>
<p>und in der Implementierungsdatei wie folgt definiert:</p>
<pre><code class="language-cpp">Kernel* Kernel::CreateKernelInNewThread(char const* pLibraryName, int portToListenOn)
{
  return CreateEmbeddedConnection(pLibraryName, false, false, portToListenOn) ;
}
</code></pre>
<p>Meine Zuweisung (pKernel) erfolgt an ein Attribut meiner Klasse und ist wie folgt deklariert</p>
<pre><code class="language-cpp">static Kernel* pKernel;
</code></pre>
<p>Bitte helft mir... ich verzweifle... danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1587321</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1587321</guid><dc:creator><![CDATA[EhWatt]]></dc:creator><pubDate>Wed, 24 Sep 2008 12:59:14 GMT</pubDate></item><item><title><![CDATA[Reply to LNK2019 - Obwohl die Lib eingebunden ist, Header vorhanden... :( on Wed, 24 Sep 2008 13:18:14 GMT]]></title><description><![CDATA[<p>ich würde dir empfehlen die libs nicht mit dem pragma einzubinden.<br />
Das ist 1. Compilerabhängig und 2. sind sind so die abhängigkeiten nicht übersichtlich, da in jedem file sowas stehen kann.<br />
Vcc: benutze hierfür die linkereinstellungen der projekteigenschaften<br />
andere: benutze hierfür die entsprechenden linkerparameter im makefile</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1587336</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1587336</guid><dc:creator><![CDATA[vlad_tepesch]]></dc:creator><pubDate>Wed, 24 Sep 2008 13:18:14 GMT</pubDate></item><item><title><![CDATA[Reply to LNK2019 - Obwohl die Lib eingebunden ist, Header vorhanden... :( on Wed, 24 Sep 2008 13:28:27 GMT]]></title><description><![CDATA[<p>Hi,<br />
ich benutze VS 2005.</p>
<p>Normalerweise benutze ich auch den Weg über die Linkereinstellungen, das pragma comment war der Versuch einer Fehlerbehebung. Machte aber leider keinen Unterschied... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1587343</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1587343</guid><dc:creator><![CDATA[EhWatt]]></dc:creator><pubDate>Wed, 24 Sep 2008 13:28:27 GMT</pubDate></item><item><title><![CDATA[Reply to LNK2019 - Obwohl die Lib eingebunden ist, Header vorhanden... :( on Wed, 24 Sep 2008 17:00:59 GMT]]></title><description><![CDATA[<p>bindest du hier eine importbibliothek für eine dll ein ( dann sollte parallel zu der lib eine dll liegen), oder direkt eine statische lib.</p>
<p>für den Fall einer Importbibliothek:<br />
vielleicht wird diese Funktion gar nicht exportiert wird, sprich außerhalb der lib nicht sichtbar ist.</p>
<p>Wenn die lib von dir ist, dann schau dir mal die declspec geschichte an!<br />
Du musst es so deixeln, dass wenn du die lib übersetzt im header vor der klasse (falls kernel eine Klasse ist) oder vor der Funktion (falls Kernel ein Namespace ist) ein Declspec(dllexport) steht.</p>
<p>Wenn du die headerdatei von außen includierst muss da ein Declspec(dllimport) hin.</p>
<p>Das wird normalerweise mit macros gemacht.</p>
<p>im pch:</p>
<pre><code class="language-cpp">#define MyDECLSPEC Declspec(dllexport)
</code></pre>
<p>defs.h:</p>
<pre><code class="language-cpp">#ifndef MyDECLSPEC 
#define MyDECLSPEC Declspec(dllimport)
#endif
</code></pre>
<p>Kernel.h</p>
<pre><code class="language-cpp">#include &quot;defs.h&quot;

class MyDECLSPEC Kernel
{
...
}
</code></pre>
<p>Kernel.cpp</p>
<pre><code class="language-cpp">#include &quot;pch.h&quot;
#include &quot;Kernel.h

Kernel* Kernel::...
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1587474</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1587474</guid><dc:creator><![CDATA[vlad_tepesch]]></dc:creator><pubDate>Wed, 24 Sep 2008 17:00:59 GMT</pubDate></item><item><title><![CDATA[Reply to LNK2019 - Obwohl die Lib eingebunden ist, Header vorhanden... :( on Wed, 24 Sep 2008 17:27:42 GMT]]></title><description><![CDATA[<p>lol was f+ürn schwachsinn, wenn er es in den projekteinstellungen einstellt ist es nicht compiler/ide abhängig oder was? leute gebt nicht immer solche witzlosen ratschläge, natürlich kann er pragma daf+ür verwenden</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1587489</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1587489</guid><dc:creator><![CDATA[ascda]]></dc:creator><pubDate>Wed, 24 Sep 2008 17:27:42 GMT</pubDate></item><item><title><![CDATA[Reply to LNK2019 - Obwohl die Lib eingebunden ist, Header vorhanden... :( on Wed, 24 Sep 2008 18:09:31 GMT]]></title><description><![CDATA[<p>Auf deine unqualifizierten, pissigen Kommentare kann man verzichten.</p>
<p>die definition im makefile oder den projektsettings ist sinnvoll, da da alle Abhängigkeiten an einer stelle ersichtlich sind.<br />
die definition per pragmas ist nicht sinnvoll, da pragmas-commandos 1. compilerabhängig (sind möglicherweise nicht in jedem compiler implementiert) sind und 2. die Abhängikeiten über alle sourcefiles verteilt sind, was der Übersichtlichkeit nicht unbedingt gut tut.</p>
<p>Außerdem habe ich nicht gesagt, dass er sie nicht verwenden kann, ich habe den Tip gegeben, die Abhngigkeiten übersichtlicher zu handhaben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1587505</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1587505</guid><dc:creator><![CDATA[vlad_tepesch]]></dc:creator><pubDate>Wed, 24 Sep 2008 18:09:31 GMT</pubDate></item></channel></rss>