<?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[LoadString]]></title><description><![CDATA[<p>Hallo,</p>
<p>folgender Code produziert in der LoadString Zeile eine System.NullReferenceException mit dem Hinweis &quot;Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.&quot;</p>
<p>An die Funktion übergeben wird:</p>
<pre><code class="language-cpp">String* Library = &quot;irgendwas.dll&quot;;
String* Text = &quot;&quot;;
unsigned int StringID;
</code></pre>
<p>Der Text mit der StringID ist in der DLL nachweisbar vorhanden. Guter Rat ist jetzt teuer. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> Ich habe schon gedacht er öffnet die Dll nicht. Ich habe sie ins System32 Verzeichnis kopiert. Ich habe den eigentlichen Pfad mit SetDllDirectory gesetzt. Ich habe den Pfad auch schon hart-codiert. Ich habe hLib auch schon als HINSTANCE definiert - hat alles nichts gebracht.</p>
<pre><code class="language-cpp">void Resource::GetString(void)
  {
    HMODULE hLib;
    HANDLE hUpdateRes;
    int Len;
    char* lpText;
    char* lib = (char*)(void*)Marshal::StringToHGlobalAnsi(Library);

    hLib = LoadLibrary(lib);
    if (hLib == NULL)
    {
      ErrorHandler();
    }

    Len = LoadString(hLib, StringID, lpText, sizeof(lpText)/sizeof(TCHAR)); 
    // ^^^^^^^^^^^ Da passiert es ^^^^^^^^^^^^
    if (Len == 0)
    {
      ErrorHandler();
    }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/75855/loadstring</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Apr 2026 07:11:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/75855.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 05 Jun 2004 13:31:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to LoadString on Sat, 05 Jun 2004 13:31:06 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>folgender Code produziert in der LoadString Zeile eine System.NullReferenceException mit dem Hinweis &quot;Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.&quot;</p>
<p>An die Funktion übergeben wird:</p>
<pre><code class="language-cpp">String* Library = &quot;irgendwas.dll&quot;;
String* Text = &quot;&quot;;
unsigned int StringID;
</code></pre>
<p>Der Text mit der StringID ist in der DLL nachweisbar vorhanden. Guter Rat ist jetzt teuer. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> Ich habe schon gedacht er öffnet die Dll nicht. Ich habe sie ins System32 Verzeichnis kopiert. Ich habe den eigentlichen Pfad mit SetDllDirectory gesetzt. Ich habe den Pfad auch schon hart-codiert. Ich habe hLib auch schon als HINSTANCE definiert - hat alles nichts gebracht.</p>
<pre><code class="language-cpp">void Resource::GetString(void)
  {
    HMODULE hLib;
    HANDLE hUpdateRes;
    int Len;
    char* lpText;
    char* lib = (char*)(void*)Marshal::StringToHGlobalAnsi(Library);

    hLib = LoadLibrary(lib);
    if (hLib == NULL)
    {
      ErrorHandler();
    }

    Len = LoadString(hLib, StringID, lpText, sizeof(lpText)/sizeof(TCHAR)); 
    // ^^^^^^^^^^^ Da passiert es ^^^^^^^^^^^^
    if (Len == 0)
    {
      ErrorHandler();
    }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/533588</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/533588</guid><dc:creator><![CDATA[JohnDoe]]></dc:creator><pubDate>Sat, 05 Jun 2004 13:31:06 GMT</pubDate></item><item><title><![CDATA[Reply to LoadString on Sat, 05 Jun 2004 13:45:43 GMT]]></title><description><![CDATA[<p>JohnDoe schrieb:</p>
<blockquote>
<pre><code class="language-cpp">String* Library = &quot;irgendwas.dll&quot;;
String* Text = &quot;&quot;;
</code></pre>
</blockquote>
<p>Das sieht für mich etwas komisch aus - entweder char* oder nur String, oder bringe ich da gerade etwas durcheinander <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/533597</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/533597</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Sat, 05 Jun 2004 13:45:43 GMT</pubDate></item><item><title><![CDATA[Reply to LoadString on Sat, 05 Jun 2004 13:49:33 GMT]]></title><description><![CDATA[<p>JohnDoe schrieb:</p>
<blockquote>
<pre><code class="language-cpp">char* lpText;
[...]
Len = LoadString(hLib, StringID, lpText, sizeof(lpText)/sizeof(TCHAR));
</code></pre>
</blockquote>
<p>Wo reservierst du für lpText Speicher?!<br />
Außerdem: Warum teilst du durch sizeof(TCHAR), wenn du oben nur char verwendest <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/533601</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/533601</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Sat, 05 Jun 2004 13:49:33 GMT</pubDate></item><item><title><![CDATA[Reply to LoadString on Sat, 05 Jun 2004 14:22:50 GMT]]></title><description><![CDATA[<p>Hmm,<br />
mit dem Speicher hast du recht. Aber mit char lpText[255] bleibt sich das Ergebnis gleich (also die Exception). Durch TCHAR teile ich weil Microsoft in der MSDN Library ausdrücklich darauf hinweist. Aber ich wenn ich das weglasse habe ich auch immer noch die Exception.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/533638</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/533638</guid><dc:creator><![CDATA[JohnDoe]]></dc:creator><pubDate>Sat, 05 Jun 2004 14:22:50 GMT</pubDate></item><item><title><![CDATA[Reply to LoadString on Sat, 05 Jun 2004 14:29:02 GMT]]></title><description><![CDATA[<p>Bist du das ganze mal mit dem Debugger durchgegangen? <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="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/533650</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/533650</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Sat, 05 Jun 2004 14:29:02 GMT</pubDate></item><item><title><![CDATA[Reply to LoadString on Sat, 05 Jun 2004 14:39:59 GMT]]></title><description><![CDATA[<p>Ja, das komische ist - am Anfang hatte ich try/catch außenrum. Aber die Exception wurde nicht abgefangen. Kann es daran liegen, dass das Ganze in einer DLL ist die aus einem C# Programm aufgerufen wird ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/533662</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/533662</guid><dc:creator><![CDATA[JohnDoe]]></dc:creator><pubDate>Sat, 05 Jun 2004 14:39:59 GMT</pubDate></item><item><title><![CDATA[Reply to LoadString on Sat, 05 Jun 2004 15:28:19 GMT]]></title><description><![CDATA[<p>Liefert LoadLibrary einen Wert ungleich NULL - also wird ErrorHandler nicht aufgerufen?</p>
<p>JohnDoe schrieb:</p>
<blockquote>
<p>Kann es daran liegen, dass das Ganze in einer DLL ist die aus einem C# Programm aufgerufen wird ?</p>
</blockquote>
<p>Klappt denn der Zugriff auf andere Funktionen dieser DLL? Außerdem ist die Verwendung von Klassen (nach außen hin) in DLLs nicht ganz unproblematisch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/533694</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/533694</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Sat, 05 Jun 2004 15:28:19 GMT</pubDate></item><item><title><![CDATA[Reply to LoadString on Sat, 05 Jun 2004 17:56:02 GMT]]></title><description><![CDATA[<p>Ich habe jetzt den Code rauskopiert in eine einfache Form-Application. Siehe da es tut. Es liegt also wohl an der DLL, da ich den Code aber mehrmals benötige ist er da eigentlich richtig untergebracht. Wie kann ich die DLL lauffähig machen ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/533844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/533844</guid><dc:creator><![CDATA[JohnDoe]]></dc:creator><pubDate>Sat, 05 Jun 2004 17:56:02 GMT</pubDate></item><item><title><![CDATA[Reply to LoadString on Sat, 05 Jun 2004 19:59:37 GMT]]></title><description><![CDATA[<p>Ok, es läuft jetzt. Nach meinem letzten Posting habe ich mir die Sache noch mal angeschaut. Irgendwann ist mir im Debugger aufgefallen, dass eine Variable die ich gerade gelöscht hatte angezeigt wurde. Dann ist mir ein Licht aufgegangen - wenn man eine DLL testen will, dann bietet VS die Möglichkeit dies mit Hilfe einer Applikation zu tun. Offensichtlich wird beim kompilieren der DLL die Applikation nicht neu kompiliert und dadurch arbeitet man ohne es zu merken einer falschen Version der DLL. Kann sein, dass dies nur deshalb so war, weil meine eigentliche Applikation in C# ist. Vielleicht prüfe ich das morgen.</p>
<p>Tnx für die Unterstützung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/533918</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/533918</guid><dc:creator><![CDATA[JohnDoe]]></dc:creator><pubDate>Sat, 05 Jun 2004 19:59:37 GMT</pubDate></item></channel></rss>