<?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[Keine Ausgabe...]]></title><description><![CDATA[<p>In der LinearAlgebra.cpp steht folgender Code:</p>
<pre><code class="language-cpp">int main(int argc, const char* argv[]) try {
	cout &lt;&lt; &quot;ok&quot; &lt;&lt; endl;
	return 0;
}
</code></pre>
<p>Es kommt ganz normal die Ausgabe &quot;ok&quot;.</p>
<p>Jetzt ergänze ich die Funktion</p>
<pre><code class="language-cpp">extern &quot;C&quot; SEXP rcpp_test() {
	Rcpp::NumericVector x(5);
	for (int i = 0; i &lt; x.size(); i++)
		x[i] = i*i*i;

	return x;
}
</code></pre>
<p>Die main() lasse ich aber unangetastet. Plötzlich kommt einfach keine Ausgabe mehr. Dieses Verhalten kann ich mir irgendwie nicht erklären</p>
<p>Ich hab schon ein wenig experimentiert. Es reicht aus, wenn man eine Funktion</p>
<pre><code class="language-cpp">extern &quot;C&quot; void voidTest() {
	Rcpp::NumericVector x(5);
}
</code></pre>
<p>vor der main() stehen hat. Was kann so böse am NumericVector sein, dass plötzlich main() keine Ausgabe mehr ausgibt, obwohl voidTest() oder rcpp_test() nicht aufgerufen wird?</p>
<p>Was hinter dem NumericVector steckt, weiß ich nicht genau, da es sich um eine Bibliotheks-typedef handelt.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/309279/keine-ausgabe</link><generator>RSS for Node</generator><lastBuildDate>Wed, 05 Aug 2026 15:54:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/309279.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 18 Oct 2012 19:25:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Keine Ausgabe... on Thu, 18 Oct 2012 19:25:28 GMT]]></title><description><![CDATA[<p>In der LinearAlgebra.cpp steht folgender Code:</p>
<pre><code class="language-cpp">int main(int argc, const char* argv[]) try {
	cout &lt;&lt; &quot;ok&quot; &lt;&lt; endl;
	return 0;
}
</code></pre>
<p>Es kommt ganz normal die Ausgabe &quot;ok&quot;.</p>
<p>Jetzt ergänze ich die Funktion</p>
<pre><code class="language-cpp">extern &quot;C&quot; SEXP rcpp_test() {
	Rcpp::NumericVector x(5);
	for (int i = 0; i &lt; x.size(); i++)
		x[i] = i*i*i;

	return x;
}
</code></pre>
<p>Die main() lasse ich aber unangetastet. Plötzlich kommt einfach keine Ausgabe mehr. Dieses Verhalten kann ich mir irgendwie nicht erklären</p>
<p>Ich hab schon ein wenig experimentiert. Es reicht aus, wenn man eine Funktion</p>
<pre><code class="language-cpp">extern &quot;C&quot; void voidTest() {
	Rcpp::NumericVector x(5);
}
</code></pre>
<p>vor der main() stehen hat. Was kann so böse am NumericVector sein, dass plötzlich main() keine Ausgabe mehr ausgibt, obwohl voidTest() oder rcpp_test() nicht aufgerufen wird?</p>
<p>Was hinter dem NumericVector steckt, weiß ich nicht genau, da es sich um eine Bibliotheks-typedef handelt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2261806</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2261806</guid><dc:creator><![CDATA[Ramanujan]]></dc:creator><pubDate>Thu, 18 Oct 2012 19:25:28 GMT</pubDate></item><item><title><![CDATA[Reply to Keine Ausgabe... on Thu, 18 Oct 2012 19:50:50 GMT]]></title><description><![CDATA[<p>Irgendetwas anderes geht vor, das du uns verheimlichst oder was du selber gar nicht wahr nimmst. Du wirst vermutlich mindestens noch irgendeine Bibliothek dazu linken. Diese enthalt eventuell Objekte statischer Lebenszeit die noch vor der main initialisiert werden und eventuell mit einem nicht sichtbaren Fehler aussteigen. Oder ein Scherzkeks war an dem Code, der cout mittels Makro irgendwie umbiegt. Oder, oder, oder…</p>
<p>Eine gute Idee wäre, einfach mal mit einem Debugger schrittweise durch das Programm zu gehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2261812</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2261812</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 18 Oct 2012 19:50:50 GMT</pubDate></item><item><title><![CDATA[Reply to Keine Ausgabe... on Thu, 18 Oct 2012 21:00:53 GMT]]></title><description><![CDATA[<p>Wenn ich den Debugger bei Eclipse starte, dann hält er normalerweise beim Betreten der main() an, sodass ich dann schrittweise debuggen kann. Wenn ich die oben stehende rcpp_test() hinzufüge, wird der Debugger direkt beendet. Exit value ist allerdings 0 statt einer (zufälligen?) negativen Zahl beim normalen Ausführen.</p>
<p>An cout liegt es nicht: Die main() wird gar nicht erst betreten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2261827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2261827</guid><dc:creator><![CDATA[Ramanujan]]></dc:creator><pubDate>Thu, 18 Oct 2012 21:00:53 GMT</pubDate></item><item><title><![CDATA[Reply to Keine Ausgabe... on Thu, 18 Oct 2012 21:47:01 GMT]]></title><description><![CDATA[<p>Eine Möglichkeit wären dann statische Konstruktoren die vor der main ablaufen. Möglicherweise das berühmte static initialization order fiasco. Oder inkompatibel übersetzte Bibliotheken (z.B. kann es komische Effekte geben, wenn eine Bibliothek mit -pthread übersetzt wird, andere nicht). Oder ein &quot;normaler&quot; Fehler in diesen Konstruktoren (das genannte Fiasco ist natürlich auch ein Fehler).</p>
<p>Ist ein bisschen schwierig, so etwas zu finden, da du erst einmal rausfinden musst, welcher Code überhaupt ausgeführt wird, damit du Haltepunkte mit dem Debugger setzen kannst. Ein guter Einstiegspunkt könnte die Funktion _start sein, aber wie das genau heißt ist abhängig von deinem System.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2261839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2261839</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 18 Oct 2012 21:47:01 GMT</pubDate></item><item><title><![CDATA[Reply to Keine Ausgabe... on Thu, 18 Oct 2012 22:00:28 GMT]]></title><description><![CDATA[<p>Du bist aber schon sicher, dass das Programm übersetzt und gebunden wird, oder?</p>
<p>Wenn dir die Frage blöd vorkommt: du wärst nicht der erste hier, der das übersieht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2261842</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2261842</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Thu, 18 Oct 2012 22:00:28 GMT</pubDate></item><item><title><![CDATA[Reply to Keine Ausgabe... on Fri, 19 Oct 2012 16:44:14 GMT]]></title><description><![CDATA[<p>manni66 schrieb:</p>
<blockquote>
<p>Du bist aber schon sicher, dass das Programm übersetzt und gebunden wird, oder?</p>
</blockquote>
<p>Ja.</p>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Eine Möglichkeit wären dann statische Konstruktoren die vor der main ablaufen. Möglicherweise das berühmte static initialization order fiasco. Oder inkompatibel übersetzte Bibliotheken (z.B. kann es komische Effekte geben, wenn eine Bibliothek mit -pthread übersetzt wird, andere nicht). Oder ein &quot;normaler&quot; Fehler in diesen Konstruktoren (das genannte Fiasco ist natürlich auch ein Fehler).</p>
</blockquote>
<p>Aber wie kann es sein, dass mehr Code ausgeführt wird, wenn ich einfach eine Zeile zu einer Funktion hinzufüge, die nicht aufgerufen wird?</p>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Ist ein bisschen schwierig, so etwas zu finden, da du erst einmal rausfinden musst, welcher Code überhaupt ausgeführt wird, damit du Haltepunkte mit dem Debugger setzen kannst. Ein guter Einstiegspunkt könnte die Funktion _start sein, aber wie das genau heißt ist abhängig von deinem System.</p>
</blockquote>
<p>Ich benutze Windows 7 und als Compiler MinGW (4.7). Kannst du mir sagen, wonach ich suchen muss?</p>
<p>Edit:<br />
Ich hab einen Fehler gefunden:<br />
Beim Ausführen fehlen Bibliotheken (*.dll), auf die zugegriffen werden müsste. Eclipse hat mir das Windows-Fenster mit der Fehler-Meldung aber gar nicht angezeigt. Als ich dann das Programm in der Konsole gestartet, kam das Fehler-Fenster...</p>
<p>Ich hab jetzt die benötigten dll-Dateien in den gleichen Ordner gepackt, wie die exe. Gibt es da eine elegantere Möglichkeit?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2262109</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2262109</guid><dc:creator><![CDATA[Ramanujan]]></dc:creator><pubDate>Fri, 19 Oct 2012 16:44:14 GMT</pubDate></item><item><title><![CDATA[Reply to Keine Ausgabe... on Fri, 19 Oct 2012 20:36:02 GMT]]></title><description><![CDATA[<blockquote>
<p>Ich hab jetzt die benötigten dll-Dateien in den gleichen Ordner gepackt, wie die exe. Gibt es da eine elegantere Möglichkeit?</p>
</blockquote>
<p>... als die DLL's immer mitzuschleppen? Statisch Linken, die PATH-Variable von Windows auf den gewünschten Pfad umändern oder die dll's nach windows\\system32 kopieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2262184</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2262184</guid><dc:creator><![CDATA[Der Tobi]]></dc:creator><pubDate>Fri, 19 Oct 2012 20:36:02 GMT</pubDate></item><item><title><![CDATA[Reply to Keine Ausgabe... on Fri, 19 Oct 2012 21:35:50 GMT]]></title><description><![CDATA[<p>Wie geht das statische Linken?</p>
<p>Bisher linke ich durch:<br />
g++ -LC:\Program Files\R-2.15.1\bin\i386 -lR -o TestProject2 src\Main.o</p>
<p>Wenn ich ein -static hinzufüge, kommt als Fehler:<br />
c:/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../mingw32/bin/ld.exe: cannot find -lR</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2262189</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2262189</guid><dc:creator><![CDATA[Ramanujan]]></dc:creator><pubDate>Fri, 19 Oct 2012 21:35:50 GMT</pubDate></item><item><title><![CDATA[Reply to Keine Ausgabe... on Sat, 20 Oct 2012 08:08:33 GMT]]></title><description><![CDATA[<p>statisches Linken funktioneirt natürlich nur mit statischen bibliotheken (libR.a), nicht mit dynamischen (<a href="http://libR.so" rel="nofollow">libR.so</a>)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2262244</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2262244</guid><dc:creator><![CDATA[otze_logout]]></dc:creator><pubDate>Sat, 20 Oct 2012 08:08:33 GMT</pubDate></item></channel></rss>