<?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[Lapack in VS verwenden, Routine wird als unresolved external symbol abgestempelt]]></title><description><![CDATA[<p>Hallo zusammen <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>
<p>Wieder einmal eine Herausforderung mit der ich alleine nicht fertig werde <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>
<p>Und zwar geht es darum, dass ich allein mit ublas numerisch nicht effizient genug bin, deshalb hab ich die boost-numeric-bindings und die LAPACK-Bibliotheken runtergeladen und in meinem Projekt eingebunden.<br />
Die Lapack-Funktionaltitäten will ich in einem kleinen Programm testen:</p>
<pre><code class="language-cpp">#include &lt;stdio.h&gt;
#include &lt;fstream&gt;

#include &lt;boost/numeric/bindings/traits/ublas_matrix.hpp&gt;
#include &lt;boost/numeric/ublas/matrix_proxy.hpp&gt;
#include &lt;boost/numeric/ublas/vector.hpp&gt;
#include &lt;boost/numeric/ublas/symmetric.hpp&gt;
#include &lt;boost/numeric/ublas/io.hpp&gt;
#include &lt;boost/numeric/ublas/lu.hpp&gt;

#include &lt;boost/numeric/bindings/lapack/gesv.hpp&gt;

using namespace boost::numeric::ublas;
using namespace boost::numeric::bindings::lapack;

extern &quot;C&quot; void dgesv(const int *N, const int *nrhs, double *A, const int *lda, int
	*ipiv, double *b, const int *ldb, int *info);

int main(int argc, char** argv){

	ublas::matrix &lt;double&gt; A(3, 3);
	ublas::matrix &lt;double&gt; b(3, 1);

    /* 3x3 matrix A
     * 76 25 11
     * 27 89 51
     * 18 60 32
     */
    A(0, 0) = 76.0;
	A(0, 1) = 25.0;
	A(0, 2) = 11.0;
	A(1, 0) = 27.0;
	A(1, 1) = 89.0;
	A(1, 2) = 51.0;
	A(2, 0) = 18.0;
	A(2, 1) = 60.0;
	A(2, 2) = 32.0;

	b(0, 0) = 10.0;
	b(1, 0) = 7.0;
	b(2, 0) = 43.0;

    int info = boost::numeric::bindings::lapack::gesv(A, b);    

    if(info == 0) /* succeed */
	printf(&quot;The solution is %lf %lf %lf\n&quot;, b[0], b[1], b[2]);
    else
	fprintf(stderr, &quot;dgesv_ fails %d\n&quot;, info);

	return 0;

};
</code></pre>
<p>Kompiliert wird es, beim Linken bekomm ich aber LNK2019:</p>
<blockquote>
<p>Start.obj : error LNK2019: unresolved external symbol _dgesv referenced in function &quot;void __cdecl boost::numeric::bindings::lapack::detail::gesv(int,int,double *,int,int *,double *,int,int *)&quot; (?gesv@detail@lapack@bindings@numeric@boost@@YAXHHPANHPAH0H1@Z)</p>
</blockquote>
<p>Die entsprechende Methode in gesv.hpp:</p>
<pre><code class="language-cpp">inline 
      void gesv (int const n, int const nrhs,
                 double* a, int const lda, int* ipiv, 
                 double* b, int const ldb, int* info) 
      {
        LAPACK_DGESV (&amp;n, &amp;nrhs, a, &amp;lda, ipiv, b, &amp;ldb, info);
      }
</code></pre>
<p>Hier <a href="http://www.c-plusplus.net/forum/276758?highlight=lnk2019+extern" rel="nofollow">http://www.c-plusplus.net/forum/276758?highlight=lnk2019+extern</a> hab ich zwar was zum Thema gefunden, aber das Problem hab ich immer noch.</p>
<p>Beispiel stammt aus <a href="http://icl.cs.utk.edu/lapack-for-windows/index.html" rel="nofollow">http://icl.cs.utk.edu/lapack-for-windows/index.html</a> und <a href="http://www.cs.rochester.edu/~bh/cs400/using_lapack.html" rel="nofollow">http://www.cs.rochester.edu/~bh/cs400/using_lapack.html</a></p>
<p>Vieelen lieben Dank an alle die es sich anschauen <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/281985/lapack-in-vs-verwenden-routine-wird-als-unresolved-external-symbol-abgestempelt</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 09:37:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/281985.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 11 Feb 2011 15:09:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Lapack in VS verwenden, Routine wird als unresolved external symbol abgestempelt on Fri, 11 Feb 2011 15:09:12 GMT]]></title><description><![CDATA[<p>Hallo zusammen <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>
<p>Wieder einmal eine Herausforderung mit der ich alleine nicht fertig werde <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>
<p>Und zwar geht es darum, dass ich allein mit ublas numerisch nicht effizient genug bin, deshalb hab ich die boost-numeric-bindings und die LAPACK-Bibliotheken runtergeladen und in meinem Projekt eingebunden.<br />
Die Lapack-Funktionaltitäten will ich in einem kleinen Programm testen:</p>
<pre><code class="language-cpp">#include &lt;stdio.h&gt;
#include &lt;fstream&gt;

#include &lt;boost/numeric/bindings/traits/ublas_matrix.hpp&gt;
#include &lt;boost/numeric/ublas/matrix_proxy.hpp&gt;
#include &lt;boost/numeric/ublas/vector.hpp&gt;
#include &lt;boost/numeric/ublas/symmetric.hpp&gt;
#include &lt;boost/numeric/ublas/io.hpp&gt;
#include &lt;boost/numeric/ublas/lu.hpp&gt;

#include &lt;boost/numeric/bindings/lapack/gesv.hpp&gt;

using namespace boost::numeric::ublas;
using namespace boost::numeric::bindings::lapack;

extern &quot;C&quot; void dgesv(const int *N, const int *nrhs, double *A, const int *lda, int
	*ipiv, double *b, const int *ldb, int *info);

int main(int argc, char** argv){

	ublas::matrix &lt;double&gt; A(3, 3);
	ublas::matrix &lt;double&gt; b(3, 1);

    /* 3x3 matrix A
     * 76 25 11
     * 27 89 51
     * 18 60 32
     */
    A(0, 0) = 76.0;
	A(0, 1) = 25.0;
	A(0, 2) = 11.0;
	A(1, 0) = 27.0;
	A(1, 1) = 89.0;
	A(1, 2) = 51.0;
	A(2, 0) = 18.0;
	A(2, 1) = 60.0;
	A(2, 2) = 32.0;

	b(0, 0) = 10.0;
	b(1, 0) = 7.0;
	b(2, 0) = 43.0;

    int info = boost::numeric::bindings::lapack::gesv(A, b);    

    if(info == 0) /* succeed */
	printf(&quot;The solution is %lf %lf %lf\n&quot;, b[0], b[1], b[2]);
    else
	fprintf(stderr, &quot;dgesv_ fails %d\n&quot;, info);

	return 0;

};
</code></pre>
<p>Kompiliert wird es, beim Linken bekomm ich aber LNK2019:</p>
<blockquote>
<p>Start.obj : error LNK2019: unresolved external symbol _dgesv referenced in function &quot;void __cdecl boost::numeric::bindings::lapack::detail::gesv(int,int,double *,int,int *,double *,int,int *)&quot; (?gesv@detail@lapack@bindings@numeric@boost@@YAXHHPANHPAH0H1@Z)</p>
</blockquote>
<p>Die entsprechende Methode in gesv.hpp:</p>
<pre><code class="language-cpp">inline 
      void gesv (int const n, int const nrhs,
                 double* a, int const lda, int* ipiv, 
                 double* b, int const ldb, int* info) 
      {
        LAPACK_DGESV (&amp;n, &amp;nrhs, a, &amp;lda, ipiv, b, &amp;ldb, info);
      }
</code></pre>
<p>Hier <a href="http://www.c-plusplus.net/forum/276758?highlight=lnk2019+extern" rel="nofollow">http://www.c-plusplus.net/forum/276758?highlight=lnk2019+extern</a> hab ich zwar was zum Thema gefunden, aber das Problem hab ich immer noch.</p>
<p>Beispiel stammt aus <a href="http://icl.cs.utk.edu/lapack-for-windows/index.html" rel="nofollow">http://icl.cs.utk.edu/lapack-for-windows/index.html</a> und <a href="http://www.cs.rochester.edu/~bh/cs400/using_lapack.html" rel="nofollow">http://www.cs.rochester.edu/~bh/cs400/using_lapack.html</a></p>
<p>Vieelen lieben Dank an alle die es sich anschauen <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/2019713</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2019713</guid><dc:creator><![CDATA[Cordula]]></dc:creator><pubDate>Fri, 11 Feb 2011 15:09:12 GMT</pubDate></item><item><title><![CDATA[Reply to Lapack in VS verwenden, Routine wird als unresolved external symbol abgestempelt on Fri, 11 Feb 2011 15:15:38 GMT]]></title><description><![CDATA[<p>Du hast die Implementierung deiner Funktion</p>
<pre><code class="language-cpp">extern &quot;C&quot; void dgesv(const int *N, const int *nrhs, double *A, const int *lda, int
    *ipiv, double *b, const int *ldb, int *info);
</code></pre>
<p>nicht zum Programm gebunden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2019717</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2019717</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Fri, 11 Feb 2011 15:15:38 GMT</pubDate></item><item><title><![CDATA[Reply to Lapack in VS verwenden, Routine wird als unresolved external symbol abgestempelt on Fri, 11 Feb 2011 15:39:52 GMT]]></title><description><![CDATA[<p>Ähm .. Ich weiß nciht ob ich dich richtig versteh. Die (Fortran-)Implementierung der Funktion hab ich mittels Project-Properties -&gt; C++ -&gt; General -&gt; Additional Include Directories -&gt; LAPACK_3.1.1\src (wo sich dgesv.f befindet).</p>
<p>Nun ist meine Denkweise folgende: gesv.hpp überlädt die Methode gesv je nach übergebenen Matrix-Typen und ruft die entsprechende Fortran-Routine auf (dgesv/zgesv/..). Diese rechnet meine Matrizen, und alle sind glücklich. Doch ich bin grad nicht sonderlich glücklich. Also irgendwo unterwegs stimmt was in meiner Logik nicht <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>
<p>Oder meintest du mit Implementierung der Funktion was anderes?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2019736</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2019736</guid><dc:creator><![CDATA[Cordula]]></dc:creator><pubDate>Fri, 11 Feb 2011 15:39:52 GMT</pubDate></item><item><title><![CDATA[Reply to Lapack in VS verwenden, Routine wird als unresolved external symbol abgestempelt on Fri, 11 Feb 2011 15:52:02 GMT]]></title><description><![CDATA[<p>Die Funktion sollte doch in einer DLL stecken und daher als Bibliothek eingebunden werden. Mit Includepfaden hat das nichts zu tun.<br />
Wenn du nur den Sourcecode von LAPACK hast, wirst du die DLL erst mal bauen müssen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2019746</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2019746</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Fri, 11 Feb 2011 15:52:02 GMT</pubDate></item><item><title><![CDATA[Reply to Lapack in VS verwenden, Routine wird als unresolved external symbol abgestempelt on Fri, 11 Feb 2011 15:58:29 GMT]]></title><description><![CDATA[<p>Ach so. Ja doch, da ist z. B. LAPACKd.lib (muss doch nicht unbedingt dynamisch sein, oder?), die ich auch eingebunden habe. Ich hab irgendwo was ähnliches gefunden, wo es stand dass in der lib die Methode möglicherweise anders geführt wird, als dgesv_ oder _dgesv_ und deshalb nicht gefunden wird. Hab ich mit VS geöffnet und gefunden - ist aber nicht, ist ganz normal dgesv <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> Hast du noch nen Tipp?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2019750</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2019750</guid><dc:creator><![CDATA[Cordula]]></dc:creator><pubDate>Fri, 11 Feb 2011 15:58:29 GMT</pubDate></item><item><title><![CDATA[Reply to Lapack in VS verwenden, Routine wird als unresolved external symbol abgestempelt on Fri, 11 Feb 2011 17:09:06 GMT]]></title><description><![CDATA[<p>Tja, dann weiß ich auch nicht ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2019785</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2019785</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Fri, 11 Feb 2011 17:09:06 GMT</pubDate></item><item><title><![CDATA[Reply to Lapack in VS verwenden, Routine wird als unresolved external symbol abgestempelt on Mon, 14 Feb 2011 08:54:08 GMT]]></title><description><![CDATA[<p>So, neue Woche, neues Glück, denselben Streß mit diesen Libs <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> Also her mit den frischen Ideen zum Thema <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Danke alle und den Valentinstag nicht vergessen (Notlösung: Schokolade und Blumen, ist immer ein Hit <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2020703</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2020703</guid><dc:creator><![CDATA[Cordula]]></dc:creator><pubDate>Mon, 14 Feb 2011 08:54:08 GMT</pubDate></item></channel></rss>