<?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[Portierbarkeit vom Visual Studio 6 Applikationen?]]></title><description><![CDATA[<p>Hallo Forum,</p>
<p>wo laufen Programme die mit dem Visual Studio 6 erstellt wurden?</p>
<p>Ich hatte die Aufgabe ein Programm zu schreiben das bestimmte Werte von einem Computer ausliesst. Es ist ein Supportprogramm das losgeschickt wird wenn unsere Hauptapplikation auf einem Kundenrechner nicht läuft. Die Funktionen die nur bei WindowsXP oder Win2000 zur Verfügung stehen (zB WMI) habe ich in eine DLL ausgelagert die dann geladen wird wenn das passende Betriebsystem vorliegt. Ähnliches für WinNT. Wenn nur ein blankes Win95 erkannt wird soll mein Programm eine Meldung ausgeben. (Aber nicht abstürzen oder sagen &quot;Funktion xyz in kernel32.dll nicht gefunden&quot;) Außerdem soll mein Programm monolitisch sein. Es soll nur eine einzige .exe Datei sein, ohne Setup, etc. Meine DLLs sind also als Ressource einkompiliert und werden nur kurzzeitig in das TempVerzeichnis extrahiert und von dort mit LoadLibrary geladen.</p>
<p>Jetzt stapfe ich auf der suche nach Testrechnern durch die Firma. Gleich auf dem ersten WinXP Rechner wird die MFCO42D.DLL und die MSVCP60D.DLL verlangt. Vermutung: Es liegt daran das mein Programm mit der Debug Konfiguration kompiliert wurde. (Ich kann mein Programm aus irgendwelchen momentan nicht in der Release Konfiguration kompilieren.) Kann ich davon ausgehen das ansonsten mein Programm auf einem nackten Win95 Rechner laufen würde? Wenn nein wie schaffe ich das? Muß ich irgendein altes Visual Studio installieren? Für mein Tool darf es kein Setup geben. Die MFC Dateien darf ich nicht mitgeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/183022/portierbarkeit-vom-visual-studio-6-applikationen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Apr 2026 02:42:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/183022.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 31 May 2007 15:59:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Portierbarkeit vom Visual Studio 6 Applikationen? on Thu, 31 May 2007 15:59:22 GMT]]></title><description><![CDATA[<p>Hallo Forum,</p>
<p>wo laufen Programme die mit dem Visual Studio 6 erstellt wurden?</p>
<p>Ich hatte die Aufgabe ein Programm zu schreiben das bestimmte Werte von einem Computer ausliesst. Es ist ein Supportprogramm das losgeschickt wird wenn unsere Hauptapplikation auf einem Kundenrechner nicht läuft. Die Funktionen die nur bei WindowsXP oder Win2000 zur Verfügung stehen (zB WMI) habe ich in eine DLL ausgelagert die dann geladen wird wenn das passende Betriebsystem vorliegt. Ähnliches für WinNT. Wenn nur ein blankes Win95 erkannt wird soll mein Programm eine Meldung ausgeben. (Aber nicht abstürzen oder sagen &quot;Funktion xyz in kernel32.dll nicht gefunden&quot;) Außerdem soll mein Programm monolitisch sein. Es soll nur eine einzige .exe Datei sein, ohne Setup, etc. Meine DLLs sind also als Ressource einkompiliert und werden nur kurzzeitig in das TempVerzeichnis extrahiert und von dort mit LoadLibrary geladen.</p>
<p>Jetzt stapfe ich auf der suche nach Testrechnern durch die Firma. Gleich auf dem ersten WinXP Rechner wird die MFCO42D.DLL und die MSVCP60D.DLL verlangt. Vermutung: Es liegt daran das mein Programm mit der Debug Konfiguration kompiliert wurde. (Ich kann mein Programm aus irgendwelchen momentan nicht in der Release Konfiguration kompilieren.) Kann ich davon ausgehen das ansonsten mein Programm auf einem nackten Win95 Rechner laufen würde? Wenn nein wie schaffe ich das? Muß ich irgendein altes Visual Studio installieren? Für mein Tool darf es kein Setup geben. Die MFC Dateien darf ich nicht mitgeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1296132</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1296132</guid><dc:creator><![CDATA[Jakata]]></dc:creator><pubDate>Thu, 31 May 2007 15:59:22 GMT</pubDate></item><item><title><![CDATA[Reply to Portierbarkeit vom Visual Studio 6 Applikationen? on Thu, 31 May 2007 16:14:53 GMT]]></title><description><![CDATA[<p>Jakata schrieb:</p>
<blockquote>
<p>wo laufen Programme die mit dem Visual Studio 6 erstellt wurden?</p>
</blockquote>
<p>Auf dem Rechner?<br />
Nein, mal im ernst: Überall da, wo die Vorraussetzungen dafür vorhanden sind. Also, wenn Du gegen die DLL-Version der CRT/MFC gelinkt hast: Überall da wo die msvcrt/mfc42.dll vorhanden oder installiert wurde.<br />
Persönlich würde ich statisch linken, da hast Du das Problem mit den DLLs nicht.</p>
<p>Jakata schrieb:</p>
<blockquote>
<p>Ich hatte die Aufgabe ein Programm zu schreiben das bestimmte Werte von einem Computer ausliesst. Es ist ein Supportprogramm das losgeschickt wird wenn unsere Hauptapplikation auf einem Kundenrechner nicht läuft.</p>
</blockquote>
<p>Dann empfehle ich auf jeden Fall statisch zu linken um alles unnötige aus dem Weg zuräumen!</p>
<p>Jakata schrieb:</p>
<blockquote>
<p>Die Funktionen die nur bei WindowsXP oder Win2000 zur Verfügung stehen (zB WMI) habe ich in eine DLL ausgelagert die dann geladen wird wenn das passende Betriebsystem vorliegt.</p>
</blockquote>
<p>Wie gesagt: Linke statisch gegen die CRT/MFC!!!<br />
Auch würde ich solche Funktionen die es bei bestimmten OS-versionen nicht gibt nicht in eine DLL auslagern (diese DLL musst Du ja dann auch mitliefern), sondern diese Funktioenn einfach via LoadLibrary/GetProcAddress &quot;einbinden&quot;!</p>
<p>Jakata schrieb:</p>
<blockquote>
<p>Außerdem soll mein Programm monolitisch sein. Es soll nur eine einzige .exe Datei sein, ohne Setup, etc.</p>
</blockquote>
<p>Dann mach dass, was ich gerade beschrieben habe!</p>
<p>Jakata schrieb:</p>
<blockquote>
<p>Meine DLLs sind also als Ressource einkompiliert und werden nur kurzzeitig in das TempVerzeichnis extrahiert und von dort mit LoadLibrary geladen.</p>
</blockquote>
<p>Lass die DLLs weg! Warum so kompliziert? Wenn Du eh LoadLibrary verwendest kannst Du es doch gleich ohne DLL machen!</p>
<p>Jakata schrieb:</p>
<blockquote>
<p>Jetzt stapfe ich auf der suche nach Testrechnern durch die Firma. Gleich auf dem ersten WinXP Rechner wird die MFCO42D.DLL und die MSVCP60D.DLL verlangt.</p>
</blockquote>
<p>Debug-Versionen der DLLs darfst Du gar nicht ausliefern! Das verstösst gegen die EULA...</p>
<p>Jakata schrieb:</p>
<blockquote>
<p>Vermutung: Es liegt daran das mein Programm mit der Debug Konfiguration kompiliert wurde.</p>
</blockquote>
<p>Wie gesagt: Ist nicht erlaubt.</p>
<p>Jakata schrieb:</p>
<blockquote>
<p>(Ich kann mein Programm aus irgendwelchen momentan nicht in der Release Konfiguration kompilieren.)</p>
</blockquote>
<p>Dann hast Du aber noch größere Hunde begraben die Du zuerst mal finden solltest... und lass die DLLs weg...</p>
<p>Jakata schrieb:</p>
<blockquote>
<p>Kann ich davon ausgehen das ansonsten mein Programm auf einem nackten Win95 Rechner laufen würde?</p>
</blockquote>
<p>Wenn Du gegen die DLL-Version der CRT linkst: Natürlich nicht! Wie kann ein Win<strong>95</strong> DLLs kennen die erst <strong>98</strong> (VC6) rausgekomen sind!?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1296139</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1296139</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Thu, 31 May 2007 16:14:53 GMT</pubDate></item><item><title><![CDATA[Reply to Portierbarkeit vom Visual Studio 6 Applikationen? on Thu, 31 May 2007 16:54:11 GMT]]></title><description><![CDATA[<p>Hallo Jochen,</p>
<p>was soll ich statisch linken? Der VS Kompiler linkt doch bereits statisch gegen die MFC DLLs. Ich habe im VS6 einfach ein MFCAppWizard Exe erstellt. Das sollte doch statisch sein?</p>
<p>Wenn Du auf meine selbst erstellten DLLs anspielst: So brauche ich nur in meiner eigenen DLL die Funktionen CreateWMIReport und GetWMIReport zu suchen und auszuführen. Die ganzen WMI Funktionen mit Funktionszeigern nachzubauen würde wohl sehr lange dauern. So linke ich statisch gegen die MS Funktionen und brauche nur meine beiden Simpel-Funktionen nachzubilden und auzuführen. Was spricht gegen das dynamische Laden selbst erstellter DLLs?</p>
<p>Es gab doch aber einen Vorgänger von Visual Studio 6? Mit denen hat man Programme mit WinNT bzw Win95 erstellt? In dieser FAQ: <a href="http://www.mpdvc.de/html.htm#Q80" rel="nofollow">http://www.mpdvc.de/html.htm#Q80</a><br />
wird erwähnt das man für Dos Programme Visual C++ V1.52c benutzen sollte. Laut dem MFC Wiki Artikel gibt es die MFC seit 1992. Es wäre also denkbar das bei Win95 eine ältere MFC DLL beiliegt?</p>
<p>Ansonsten muß ich mir überlegen meine GUI in normaler WinApi nachzubauen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1296153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1296153</guid><dc:creator><![CDATA[Jakata]]></dc:creator><pubDate>Thu, 31 May 2007 16:54:11 GMT</pubDate></item><item><title><![CDATA[Reply to Portierbarkeit vom Visual Studio 6 Applikationen? on Thu, 31 May 2007 17:19:39 GMT]]></title><description><![CDATA[<p>Jakata schrieb:</p>
<blockquote>
<p>was soll ich statisch linken? Der VS Kompiler linkt doch bereits statisch gegen die MFC DLLs.</p>
</blockquote>
<p>DLL != statisch!<br />
Stelle es in den Projekteinstellungen um: Project|Settings|C/C++|Code generation|Use runtime library: (hier irgendwas *ohne* DLL auswählen)[/quote]</p>
<p>Jakata schrieb:</p>
<blockquote>
<p>Wenn Du auf meine selbst erstellten DLLs anspielst: So brauche ich nur in meiner eigenen DLL die Funktionen CreateWMIReport und GetWMIReport zu suchen und auszuführen. Die ganzen WMI Funktionen mit Funktionszeigern nachzubauen würde wohl sehr lange dauern.</p>
</blockquote>
<p>WMI ist doch COM... was hat dass mit Funktionen in anderen DLLs zu tun??? <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>
<p>Jakata schrieb:</p>
<blockquote>
<p>Es gab doch aber einen Vorgänger von Visual Studio 6? Mit denen hat man Programme mit WinNT bzw Win95 erstellt?</p>
</blockquote>
<p>Man kann doch auch mit VC6 Programme für Win95/NT erstellen, oder geht es bei Dir nicht?</p>
<p>Jakata schrieb:</p>
<blockquote>
<p>Laut dem MFC Wiki Artikel gibt es die MFC seit 1992. Es wäre also denkbar das bei Win95 eine ältere MFC DLL beiliegt?</p>
</blockquote>
<p>Tut es aber nicht. Und was nützen Dir <em>ältere</em> DLLs, wenn Du *neuere* brauchst?</p>
<p>Jakata schrieb:</p>
<blockquote>
<p>Ansonsten muß ich mir überlegen meine GUI in normaler WinApi nachzubauen...</p>
</blockquote>
<p>Wie gesagt: Linke statisch, dann hast Du das Problem nicht!<br />
Auch wird Dir reine WinAPI auch nicht helfen, wenn Du nicht statisch linkst, da Du dann immer noch die CRT-DLLs mitgeben musst!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1296163</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1296163</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Thu, 31 May 2007 17:19:39 GMT</pubDate></item><item><title><![CDATA[Reply to Portierbarkeit vom Visual Studio 6 Applikationen? on Fri, 01 Jun 2007 05:52:05 GMT]]></title><description><![CDATA[<blockquote>
<p>Ich kann mein Programm aus irgendwelchen momentan nicht in der Release Konfiguration kompilieren</p>
</blockquote>
<p>Vergleiche mal von Release und Debug die Projekteigenschaften bzw. welche Libs jeweils eingebunden sind. Vielleicht fehlt im Release was?</p>
<p>Oder du schaltest durch</p>
<pre><code class="language-cpp">#ifdef _DEBUG
#endif
</code></pre>
<p>Quellen aus, die in deinem Release eigentlich erforderlich sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1296336</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1296336</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 01 Jun 2007 05:52:05 GMT</pubDate></item><item><title><![CDATA[Reply to Portierbarkeit vom Visual Studio 6 Applikationen? on Mon, 04 Jun 2007 11:27:50 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/17621">@Tester</a>: Das Problem ist gelösst, siehe anderen Thread.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/5675">@Jochen</a>: Der Umstieg von &quot;Multithreaded DLL&quot; auf &quot;Multithreaded&quot; und die Änderung &quot;Projekt -&gt; Einstellungen -&gt; Registrierkarte Allgemein -&gt; MFC in einer gemeinsam genutzten DLL verwenden&quot; auf &quot;Benutze statische MFC Bibliothek&quot; bewirken das ich keine externen MFC dll mehr benötige. Richtig? Also ist mein Programm von diesem Gesichtspunkt aus Win95 ready?</p>
<p>Wenn ich diesen Code auf einem nacktem Windows95 ausführe, wo wird es dann &quot;krachen&quot;? Soweit ich im Web gesucht habe ist Com auch für Win95 vorhanden. CoCreateInstance würde dann die CLSID von WMI nicht finden und etwas anderes als 0 zurückgeben? (Ich kann es nicht testen, weil wir in der Firma nur WinXP haben.) Wenn es so ist muß ich den Code nicht in eine extra DLL auslagern.</p>
<pre><code class="language-cpp">hres = CoInitializeEx(0, COINIT_MULTITHREADED);
if (hres&gt;=0) {
	hres = CoInitializeSecurity(0, -1, 0, 0, RPC_C_AUTHN_LEVEL_DEFAULT,RPC_C_IMP_LEVEL_IMPERSONATE, 0, EOAC_NONE, 0);
	IWbemLocator *pLoc=0;
	hres = CoCreateInstance(CLSID_WbemLocator,  0,  CLSCTX_INPROC_SERVER,  IID_IWbemLocator,  reinterpret_cast&lt;void **&gt;(&amp;pLoc));
	...
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1298373</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1298373</guid><dc:creator><![CDATA[Jakata]]></dc:creator><pubDate>Mon, 04 Jun 2007 11:27:50 GMT</pubDate></item></channel></rss>