想趁这个暑假学好MFC编程,看了网上朋友的推荐,选了大名鼎鼎的《深入解析MFC》这本书。不过在编译他的第一个mfc程序示例是就遇到困难了。
编译器显示如下错误提示:fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]
上网找怎么解决问题,发现许多人都遇到同样的问题,同时提供了各种各样的解决办法。我用的是vs2008,我提供下我的机子上的解决方案供大家参考:右击项目-->属性-->配置属性-->常规,然后在右边的“项目默认值”中的“MFC的使用”选项中选择“在共享 DLL 中使用 MFC”,再运行就不会有错误了,也可以选“在静态库中使用MFC”。他们的区别不大,具体区别大家可以上网搜索。
针对上面的那个例子,我又编译了一下,连接时又遇到如下问题:fatal error LNK1561: entry point must be defined。程序中没有定义入口函数?。。。。 我想可能又跟vs2008的link设置有关,我又照着先前的步骤:右击项目-->属性-->配置属性..... 找到linker项下面的Advanced,在右边发现Entry Point字段是空的,可能是这里的问题。我们知道在MFC里(其他c/c++程序也是)程序的入口点并非我们写的main()或者WinMain(),而是WinMainCRTStartup(),由他调用我们的main函数。所以我在该字段下添了WinMainCRTStartup,点击应用。再build一次成功了。问题解决。
我又在网上找到一些其他的关于这个问题的资料(摘录):
{
今天,在VC的开发之路上继续摸索前行时,碰到一个连接错误“fatal error LNK1561: entry point must be defined”,查了很多资料都没能够解决,最终查到是连接命令中的/subsystem不正确,改为/subsystem:windows后一切正常,特此写下随笔一篇,加深自己的印象。
附:VC知识库中的一段相关文章
<