<?xml version="1.0" encoding="utf-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Kommentare zu: MFC 8.0 für Visual C++ 6</title>
	<atom:link href="http://blog.speedproject.de/2006/12/08/mfc-80-fuer-visual-c-6/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.speedproject.de/2006/12/08/mfc-80-fuer-visual-c-6/</link>
	<description>Mehr .core als .nett</description>
	<lastBuildDate>Mon, 06 Feb 2012 09:59:52 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
	<item>
		<title>Von: Sven</title>
		<link>http://blog.speedproject.de/2006/12/08/mfc-80-fuer-visual-c-6/comment-page-1/#comment-11246</link>
		<dc:creator>Sven</dc:creator>
		<pubDate>Sat, 09 Dec 2006 18:43:03 +0000</pubDate>
		<guid isPermaLink="false">http://blog.speedproject.de/2006/12/08/mfc-80-fuer-visual-c-6/#comment-11246</guid>
		<description>Die Linker-Warnungen beim Kompilieren haben bei mir bisher auch noch keine negativen Seiteneffekte erzeugt. Sofern man seine Programme sowohl mit der MFC 6 als auch mit der MFC 8 verwenden will, muss man wirklich aufpassen. Die MFC 6 ist an einigen Stellen noch auf 32-bit begrenzt (z.B. Dateizugriff in CFile). Auch die Funktionsdeklaration von CWnd::OnNcHitTest hat sich geändert.

Die neuen Schlüsselwörter in der ATL sind wirklich problematisch, teilweise hängen Compiler-Funktionen und ATL-Konstrukte auch arg miteinander zusammen. Bei ATL-COM-Servern muss man auch zwingend weiterhin die BEGIN_OBJECT_MAP/END_OBJECT_MAP-Makros verwenden, das automatische Einsammeln der Objekte funktioniert aufgrund des alten Compilers nicht.

Bei mir wurden die größten Probleme aber schon mit dem Umstieg auf die MFC 7 abgestellt, so dass ich meine Projekte ohne wesentliche Fehlermeldungen auch auf die MFC 8 umstellen konnte.</description>
		<content:encoded><![CDATA[<p>Die Linker-Warnungen beim Kompilieren haben bei mir bisher auch noch keine negativen Seiteneffekte erzeugt. Sofern man seine Programme sowohl mit der MFC 6 als auch mit der MFC 8 verwenden will, muss man wirklich aufpassen. Die MFC 6 ist an einigen Stellen noch auf 32-bit begrenzt (z.B. Dateizugriff in CFile). Auch die Funktionsdeklaration von CWnd::OnNcHitTest hat sich geändert.</p>
<p>Die neuen Schlüsselwörter in der ATL sind wirklich problematisch, teilweise hängen Compiler-Funktionen und ATL-Konstrukte auch arg miteinander zusammen. Bei ATL-COM-Servern muss man auch zwingend weiterhin die BEGIN_OBJECT_MAP/END_OBJECT_MAP-Makros verwenden, das automatische Einsammeln der Objekte funktioniert aufgrund des alten Compilers nicht.</p>
<p>Bei mir wurden die größten Probleme aber schon mit dem Umstieg auf die MFC 7 abgestellt, so dass ich meine Projekte ohne wesentliche Fehlermeldungen auch auf die MFC 8 umstellen konnte.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Kay</title>
		<link>http://blog.speedproject.de/2006/12/08/mfc-80-fuer-visual-c-6/comment-page-1/#comment-11244</link>
		<dc:creator>Kay</dc:creator>
		<pubDate>Sat, 09 Dec 2006 14:37:24 +0000</pubDate>
		<guid isPermaLink="false">http://blog.speedproject.de/2006/12/08/mfc-80-fuer-visual-c-6/#comment-11244</guid>
		<description>Hi Svenni :)

Hab das mal bei meinem 135k Zeilen Projekt &quot;Q8Tool&quot; ausprobiert:

MFC und ATL konnte ich problemlos kompilieren, es gab jedoch ein paar Warnings (&quot;makemfc.bat 1&gt;makemfc.log 2&gt;makemfc.err&quot;).
In makemfc.log findest Du dann u.A.:
-LINK : warning LNK4078: multiple &quot;.text&quot; sections found with different attributes (40000040)
-mfcdload.lib(advapi.obj) : warning LNK4099: PDB &quot;atldload.pdb&quot; was not found with &quot;E:\VStudio\VC98\LIB\mfcdload.lib&quot; or at &quot;E:\VStudio\VC98\atlmfc\src\MFC\INTEL\atldload.pdb&quot;; linking object as if no debug info

Das ist sicherlich nicht tragisch.

Bis auf zwei Fehler konnte ich alles durch Umstellen von Datentypen bewerkstelligen:
&lt;blockquote&gt;#if _MFC_VER&lt; =0x600
#define FILEPOS DWORD
#define FILELEN DWORD
#define genericFileException CFileException::generic
#else
#define FILEPOS ULONGLONG
#define FILELEN ULONGLONG
#define genericFileException CFileException::genericException
#endif&lt;/blockquote&gt;
Was aber für mich bisher nicht sauber lösbar scheint ist der rege Gebrauch von &quot;__if_exists&quot;, &quot;__if_not_exists&quot; und ähnlichem in diversen ATL Include Dateien, das der VC6 Compiler nicht unterstützt.
Bei mir funktionieren deshalb die ATL Makros &quot;BEGIN_CONNECTION_POINT_MAP&quot; und &quot;END_CONNECTION_POINT_MAP&quot; nicht.

Ich habe &quot;__if_exists&quot; und &quot;__if_not_exists&quot; in den beiden Macros geändert, musste noch mein selbstgestricktes Free_Threaded &quot;IConnectionPointImpl&quot; anpasse, weil in ATL8 CComDynamicUnkArray::GetUnknown und CComDynamicUnkArray::GetCookie keine statischen Methoden mehr sind.

Der Compiler läuft jetzt mit Q8Tool sauber durch. :mrgreen:
Falls noch Seltsames auftritt, melde ich das hier ;)</description>
		<content:encoded><![CDATA[<p>Hi Svenni <img src='http://blog.speedproject.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Hab das mal bei meinem 135k Zeilen Projekt &#8220;Q8Tool&#8221; ausprobiert:</p>
<p>MFC und ATL konnte ich problemlos kompilieren, es gab jedoch ein paar Warnings (&#8220;makemfc.bat 1>makemfc.log 2>makemfc.err&#8221;).<br />
In makemfc.log findest Du dann u.A.:<br />
-LINK : warning LNK4078: multiple &#8220;.text&#8221; sections found with different attributes (40000040)<br />
-mfcdload.lib(advapi.obj) : warning LNK4099: PDB &#8220;atldload.pdb&#8221; was not found with &#8220;E:\VStudio\VC98\LIB\mfcdload.lib&#8221; or at &#8220;E:\VStudio\VC98\atlmfc\src\MFC\INTEL\atldload.pdb&#8221;; linking object as if no debug info</p>
<p>Das ist sicherlich nicht tragisch.</p>
<p>Bis auf zwei Fehler konnte ich alles durch Umstellen von Datentypen bewerkstelligen:<br />
#if _MFC_VER< =0&#215;600<br />
#define FILEPOS DWORD<br />
#define FILELEN DWORD<br />
#define genericFileException CFileException::generic<br />
#else<br />
#define FILEPOS ULONGLONG<br />
#define FILELEN ULONGLONG<br />
#define genericFileException CFileException::genericException<br />
#endif<br />
Was aber für mich bisher nicht sauber lösbar scheint ist der rege Gebrauch von &#8220;__if_exists&#8221;, &#8220;__if_not_exists&#8221; und ähnlichem in diversen ATL Include Dateien, das der VC6 Compiler nicht unterstützt.<br />
Bei mir funktionieren deshalb die ATL Makros &#8220;BEGIN_CONNECTION_POINT_MAP&#8221; und &#8220;END_CONNECTION_POINT_MAP&#8221; nicht.</p>
<p>Ich habe &#8220;__if_exists&#8221; und &#8220;__if_not_exists&#8221; in den beiden Macros geändert, musste noch mein selbstgestricktes Free_Threaded &#8220;IConnectionPointImpl&#8221; anpasse, weil in ATL8 CComDynamicUnkArray::GetUnknown und CComDynamicUnkArray::GetCookie keine statischen Methoden mehr sind.</p>
<p>Der Compiler läuft jetzt mit Q8Tool sauber durch. <img src='http://blog.speedproject.de/wp-includes/images/smilies/icon_mrgreen.gif' alt=':mrgreen:' class='wp-smiley' /><br />
Falls noch Seltsames auftritt, melde ich das hier <img src='http://blog.speedproject.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
</channel>
</rss>

