<?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[statische objektinstanz in statischer bibliothek]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe folgendes problem:</p>
<p>in einer statischen bibliothek existiert eine simple Klasse:</p>
<pre><code class="language-cpp">// simpel.h

class cl_Simple
{
    public:
    cl_Simple();
    ~cl_Simple();

    protected:
    void Init();

};
</code></pre>
<pre><code class="language-cpp">// simpel.cpp

    cl_Simple::cl_Simple()
    {
       Init();
    }

    cl_Simple::~cl_Simple()
    {
    }

    cl_Simple::Init()
    {
       // perform some init stuff
    }

    // Create instance of cl_Simple
    cl_Simple simple_instance;
</code></pre>
<p>Das Problem is nun folgendes:</p>
<p>Binde ich diese bibliothek nun in ein projekt ein, wird die instanz von<br />
cl_Simple nicht erzeugt. Ich vermute, das liegt daran, dass es keine<br />
weiteren bezüge auf diese instanz gibt und der linker sie deshalb schlicht<br />
wegoptimiert.</p>
<p>(simple_instance würde natürlich erzeugt werden, wenn ich das cpp file<br />
direkt in mein projekt einbinde und aus der lib entferne - das möchte ich aber<br />
ausdrücklich _nicht_)</p>
<p>Ich arbeite mit VC++ 6.0 und habe bereits mit der linker option /OPT:NOREF<br />
experimentiert, allerdings ohne erfolg.</p>
<p>Wie kann ich die erzeugung von simple_instance erzwingen ?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/50950/statische-objektinstanz-in-statischer-bibliothek</link><generator>RSS for Node</generator><lastBuildDate>Sun, 31 May 2026 11:31:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/50950.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 05 Oct 2003 17:28:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to statische objektinstanz in statischer bibliothek on Sun, 05 Oct 2003 17:28:31 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe folgendes problem:</p>
<p>in einer statischen bibliothek existiert eine simple Klasse:</p>
<pre><code class="language-cpp">// simpel.h

class cl_Simple
{
    public:
    cl_Simple();
    ~cl_Simple();

    protected:
    void Init();

};
</code></pre>
<pre><code class="language-cpp">// simpel.cpp

    cl_Simple::cl_Simple()
    {
       Init();
    }

    cl_Simple::~cl_Simple()
    {
    }

    cl_Simple::Init()
    {
       // perform some init stuff
    }

    // Create instance of cl_Simple
    cl_Simple simple_instance;
</code></pre>
<p>Das Problem is nun folgendes:</p>
<p>Binde ich diese bibliothek nun in ein projekt ein, wird die instanz von<br />
cl_Simple nicht erzeugt. Ich vermute, das liegt daran, dass es keine<br />
weiteren bezüge auf diese instanz gibt und der linker sie deshalb schlicht<br />
wegoptimiert.</p>
<p>(simple_instance würde natürlich erzeugt werden, wenn ich das cpp file<br />
direkt in mein projekt einbinde und aus der lib entferne - das möchte ich aber<br />
ausdrücklich _nicht_)</p>
<p>Ich arbeite mit VC++ 6.0 und habe bereits mit der linker option /OPT:NOREF<br />
experimentiert, allerdings ohne erfolg.</p>
<p>Wie kann ich die erzeugung von simple_instance erzwingen ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/366358</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/366358</guid><dc:creator><![CDATA[Wonko]]></dc:creator><pubDate>Sun, 05 Oct 2003 17:28:31 GMT</pubDate></item><item><title><![CDATA[Reply to statische objektinstanz in statischer bibliothek on Sun, 05 Oct 2003 17:49:38 GMT]]></title><description><![CDATA[<blockquote>
<p>Wie kann ich die erzeugung von simple_instance erzwingen ?</p>
</blockquote>
<p>Das ist kein Standardproblem. Ich verschiebe dich mal ins VC Forum.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/366370</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/366370</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Sun, 05 Oct 2003 17:49:38 GMT</pubDate></item><item><title><![CDATA[Reply to statische objektinstanz in statischer bibliothek on Sun, 05 Oct 2003 18:00:09 GMT]]></title><description><![CDATA[<p>Bist du sicher, dass die Instanz nicht doch erzeugt wird?<br />
Ich habe auch VC++ 6, dieses Problem ist mir aber noch nie aufgefallen.</p>
<p>Der Compiler/Linker hat AFAIK gar kein Recht so etwas wegzuoptimieren.</p>
<p>Ich würde mir eher um was anderes Sorgen machen:<br />
Du hast absolut keine Möglichkeit festzulegen in welcher Reihenfolge globale, nicht-statische Objekte konstruiert werden. cout darfst du im Konstruktor deiner Klasse z.B. nicht verwenden, weil es vielleicht noch gar nicht existiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/366372</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/366372</guid><dc:creator><![CDATA[Christoph]]></dc:creator><pubDate>Sun, 05 Oct 2003 18:00:09 GMT</pubDate></item><item><title><![CDATA[Reply to statische objektinstanz in statischer bibliothek on Sun, 05 Oct 2003 19:37:03 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>zunächst mal danke für die antwort.</p>
<p>Ich bin mir des problems bewusst, dass die initialisierungsreihenfolge<br />
globaler objekte nicht definiert ist. Gehen wir einfach mal davon aus,<br />
dass das für mich im moment keine rolle spielt.</p>
<p>Fakt ist: Die objektinstanz wird nicht erzeugt. Ein simples OutputDebugString<br />
im ctor kann hier als test dienen. Es lassen sich nicht einmal Haltepunkte<br />
im code setzen, was für mich bedeutet: der code wird schlicht nicht eingebunden.</p>
<p>Ansonsten stimme ich Dir zu. Meiner Meinung nach dürfte dieser code nicht wegoptimiert werden.</p>
<p>Vorschläge wären sehr willkommen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/366434</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/366434</guid><dc:creator><![CDATA[Wonko]]></dc:creator><pubDate>Sun, 05 Oct 2003 19:37:03 GMT</pubDate></item><item><title><![CDATA[Reply to statische objektinstanz in statischer bibliothek on Mon, 06 Oct 2003 23:10:17 GMT]]></title><description><![CDATA[<p>Ich habe mittlerweile in diversen Foren die Problematik dargelegt und sie ist<br />
nach allem, was ich rausfinden konnte, real.</p>
<p>Für mich liegt die ungeliebte Lösung nun darin, meine Basisdienste nicht in<br />
Libraryform sondern als Sourcecode in meinen Projekten zu verwenden.</p>
<p>Persönlich bin ich recht erschüttert über diese (mir bislang unbekannte) Einschränkung von C++ (VC++ ?), da sie die Implementierung bestimmter<br />
Mechanismen innerhalb von Libraries vollständig unterbindet.</p>
<p>MfG.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/367205</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/367205</guid><dc:creator><![CDATA[Wonko]]></dc:creator><pubDate>Mon, 06 Oct 2003 23:10:17 GMT</pubDate></item></channel></rss>