<?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[EXE statisch Linken (ohne BPLs) bei Konsolen-Programmen]]></title><description><![CDATA[<p>Ich habe ein Problem beim statischen Linken von Konsolen-Programmen (also beim Erzeugen einer ausführbaren EXE-Datei ohne runtime Packages) bei BCB 6</p>
<p>Bei einer normalen Applikation mit VCL und Fenstern geht das ohne Probleme. Man nimmt einfach entsprechend die Option &quot;build with runtime packages&quot; bei den Projektoptionen heraus.</p>
<p>Wenn ich aber jetzt beispielsweise das folgende Konsolenprogramm auch statisch (ohne Laufzeitbibliotheken) linken möchte:</p>
<pre><code>#include &lt;vcl.h&gt;
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
	Application-&gt;MessageBoxA(&quot;Hallo&quot;, &quot;Welt&quot;, 16);
	return 0;
}
//---------------------------------------------------------------------------
</code></pre>
<p>dann kommen beim Linken folgende Fehler:</p>
<pre><code>[Linker Error] Unresolved external 'Forms::Application' referenced from E:\CPP\PROGRAMME\DIVERSES\FOLDERSIZE\UNIT1.OBJ
[Linker Error] Unresolved external '__fastcall Forms::TApplication::MessageBox(const char *, const char *, int)' referenced from C:\PROGRAMME\BORLAND\CBUILDER6\LIB\RELEASE\VCLE.LIB|_t_Forms
</code></pre>
<p>Weshalb sollte das nicht auch gehen?? Wäre echt froh um Hilfe!<br />
Danke!<br />
- Adrian</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/118248/exe-statisch-linken-ohne-bpls-bei-konsolen-programmen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Jul 2026 15:07:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/118248.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 16 Aug 2005 15:39:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to EXE statisch Linken (ohne BPLs) bei Konsolen-Programmen on Tue, 16 Aug 2005 15:39:54 GMT]]></title><description><![CDATA[<p>Ich habe ein Problem beim statischen Linken von Konsolen-Programmen (also beim Erzeugen einer ausführbaren EXE-Datei ohne runtime Packages) bei BCB 6</p>
<p>Bei einer normalen Applikation mit VCL und Fenstern geht das ohne Probleme. Man nimmt einfach entsprechend die Option &quot;build with runtime packages&quot; bei den Projektoptionen heraus.</p>
<p>Wenn ich aber jetzt beispielsweise das folgende Konsolenprogramm auch statisch (ohne Laufzeitbibliotheken) linken möchte:</p>
<pre><code>#include &lt;vcl.h&gt;
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
	Application-&gt;MessageBoxA(&quot;Hallo&quot;, &quot;Welt&quot;, 16);
	return 0;
}
//---------------------------------------------------------------------------
</code></pre>
<p>dann kommen beim Linken folgende Fehler:</p>
<pre><code>[Linker Error] Unresolved external 'Forms::Application' referenced from E:\CPP\PROGRAMME\DIVERSES\FOLDERSIZE\UNIT1.OBJ
[Linker Error] Unresolved external '__fastcall Forms::TApplication::MessageBox(const char *, const char *, int)' referenced from C:\PROGRAMME\BORLAND\CBUILDER6\LIB\RELEASE\VCLE.LIB|_t_Forms
</code></pre>
<p>Weshalb sollte das nicht auch gehen?? Wäre echt froh um Hilfe!<br />
Danke!<br />
- Adrian</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853528</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853528</guid><dc:creator><![CDATA[ABader]]></dc:creator><pubDate>Tue, 16 Aug 2005 15:39:54 GMT</pubDate></item><item><title><![CDATA[Reply to EXE statisch Linken (ohne BPLs) bei Konsolen-Programmen on Tue, 16 Aug 2005 15:43:39 GMT]]></title><description><![CDATA[<p>Hmm... passen Messageboxen und Konsolenanwendungen zusammen? Braucht ne Message-Box kein Windows (Formular, nicht das OS)-Handle, das sie aufruft? Auf jeden Fall steht da in deiner Fehlermeldung ein paar mal Forms drin... und du hast keins...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853531</guid><dc:creator><![CDATA[HEZ]]></dc:creator><pubDate>Tue, 16 Aug 2005 15:43:39 GMT</pubDate></item><item><title><![CDATA[Reply to EXE statisch Linken (ohne BPLs) bei Konsolen-Programmen on Tue, 16 Aug 2005 15:49:34 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Vor allem existiert in einer Konsolenanwendung Applications nicht. Nimm statt Application-&gt;MessageBoxA einfach MessageBox.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853538</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853538</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 16 Aug 2005 15:49:34 GMT</pubDate></item><item><title><![CDATA[Reply to EXE statisch Linken (ohne BPLs) bei Konsolen-Programmen on Tue, 16 Aug 2005 16:26:11 GMT]]></title><description><![CDATA[<p>Danke schon mal für die schnellen Antworten.</p>
<blockquote>
<p>Hmm... passen Messageboxen und Konsolenanwendungen zusammen? Braucht ne Message-Box kein Windows (Formular, nicht das OS)-Handle, das sie aufruft? Auf jeden Fall steht da in deiner Fehlermeldung ein paar mal Forms drin... und du hast keins...</p>
</blockquote>
<p>Also das dachte ich am Anfang auch. Aber eben, wenn man das Programm normal linken lässt, gibt es keinerlei Probleme. Offenbar wird als Handle der Desktop genommen.</p>
<blockquote>
<p>Vor allem existiert in einer Konsolenanwendung Applications nicht. Nimm statt Application-&gt;MessageBoxA einfach MessageBox.</p>
</blockquote>
<p>Application ist doch in &lt;vcl&gt; definiert und wird dort auch initialisiert, so dass Application zur Verfügung steht. Sonst käme doch eine Zugriffsverletzung? Wie gesagt, wenn ich mit den BCB-Defaults das Programm Compiliere, gehts ja.</p>
<p>Ich denke auch, dass es etwas mit Application (oder im weiteren einfach mit dem Gebrauch von VCL) zu tun hat. Aber wenn das effektiv verboten wäre bei Konsolenprogrammen, Application zu verwenden, dann würde es ja auch bei der durch Linken mit BPLs erstellten EXE Probleme geben. Irgendwie hat es einfach noch andere Gründe... Oder was meint ihr?<br />
- Adrian</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853567</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853567</guid><dc:creator><![CDATA[ABader]]></dc:creator><pubDate>Tue, 16 Aug 2005 16:26:11 GMT</pubDate></item><item><title><![CDATA[Reply to EXE statisch Linken (ohne BPLs) bei Konsolen-Programmen on Tue, 16 Aug 2005 16:33:55 GMT]]></title><description><![CDATA[<p>Die Fehlermeldung &quot;Unresolved external&quot; deutet normalerweise darauf hin, dass die entsprechende Variable (oder Funktion) zwar deklariert aber nicht entsprechend definiert wurde (und die entsprechnde Übersetzungseinheit dazugelinkt).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853572</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 16 Aug 2005 16:33:55 GMT</pubDate></item><item><title><![CDATA[Reply to EXE statisch Linken (ohne BPLs) bei Konsolen-Programmen on Tue, 16 Aug 2005 17:11:31 GMT]]></title><description><![CDATA[<p>Ja, das stimmt. Aber was ich einfach nicht verstehe: Weshalb sollte alles definiert sein, wenn für dynamische Laufzeitbibliotheken gelinkt wird; wenn aber statisch gelinkt wird nicht?? Am Code und an den Includes ändert ja nichts. Und weshalb geht das ganze Spiel problemlos bei Programmen mit Fenstern, weshalb aber nur halb bei Konsolenprogrammen?<br />
- Adrian</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853589</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853589</guid><dc:creator><![CDATA[ABader]]></dc:creator><pubDate>Tue, 16 Aug 2005 17:11:31 GMT</pubDate></item></channel></rss>