MFC应用程序,我试图以迁移使用 afxext.h, ,这的原因 _AFXDLL 设置,这导致这一错误,如果我设置的 /MT:

请使用/MD开关于建立_AFXDLL

我的研究表明,这是不可能建立一个应用程序,用于执行在Windows NT4.0使用Visual Studio(C++,在这种情况下),2005年。

这是真的吗?是否有任何解决办法提供?

没有正确的解决方案

其他提示

不,还有许多应用程序的建立与VS2005,必须支持Windows XP、2000NT,整个堆栈。问题是,(默认)VS2005希望利用图书馆/出口不存在NT。

看看 这个线程 对于一些背景。

然后开始限制的依赖性,通过预处理的宏,并避免Api其不支持在NT。

摆脱_AFXDLL错误,你有没有试着改变的设置使用MFC作为一个静态的lib而不是DLL?这是类似于什么你已经做的不断变化的运行时库静态的,而不是DLL。

解决办法是解决多螺纹DLL。 简单的说明.短摘要:

该运费8.0C Runtime Library DLL(MSVCR80.DLL)不支持 NT4.0SP6由于种种原因和原因只有一个:有人在Microsoft 增加一个功能呼叫 GetLongPathNameW 这不存在 kernel32.dll在NT4.0。

CRTLIB.C在线577,有一个呼叫 GetLongPathNameW.简单地将其替换为: ret = 0; 只有使用此建立的MSVCR80.DLL 在NT4.0。

一旦你得到了这些工作,来了一个更通用的解决方案应该是微不足道的。

虽然我不熟悉afxext.h,我想知道关于它使不符合窗NT4....

然而,回答原来的问题:"我的研究表明,这是不可能建立一个应用程序,用于执行在Windows NT4.0使用Visual Studio(C++,在这种情况下)2005年。"

在回答应该是肯定的,尤其是如果应用程序的最初编写或运行上的NT4!与afxext.h东西放在一边,这应该是一个简单的是.

其他的事情我找的麻烦是松散的自然人都扔出新术语。授予大多数人认为'NT'作为窗NT4但它仍然是模糊的,因为'大多数人'不等于所有人。'

在现实中期NT'等于NT系列。NT系列NT3,NT4,NT5(2000年,2003年)和NT6(Vista)。

Win32是一个子系统其目标C/C++代码了。所以我看不出有任何理由为什么一个不应该能够针对这NT4平台和子系统,或者,如果这是一个平台迁移演习,删除MFC依赖关系,VC可能是强加。

加afxext.h,这听起来对我像一个子系统的兼容性问题。它的一部分,MFC从我的谷歌的研究。该afxext.h似乎是MFC(Microsoft基础类)的扩展。

你可以除去你的依赖MFC?什么类型的应用程序是这个吗?(CLR、服务、界面?) 你可以转换项目一个不受管理C++项目在VC8.0?

我们希望这些将会帮助你。

这个想法是,exe需要链接到静态的图书馆。

请试试这个 "结构性"、"一般性","使用的MFC"来"使用MFC在一个静态的图书馆" "结构性"、"一般性","使用的ATL"至"静态的链接。"

"结构性"、"C\C++"、"代码代","Runtime Library"到"多螺纹(\吨)"

测试平台 建立机:Visual Studio2005年在窗XP sp-2 客户机:窗XP sp2(没有VS2005安装)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top