今天在编写项目的时候,我通常会用动态加载链接库的方式编译程序,这样编译得到的程序会比较精简一些,昨天,由于要将程序拿出来用于演示,对方电脑没装VC,所以我在工程选项中将动态加载的方式改成静态加载。没想到的是,重新编译后VC竟然报错如下: error RC2151 : cannot reuse string constants, 61446(0xF006) - "****" already defined. Cannot add 61446(0xF006) - "一未命名文件".
后来在微软的官网上找到了答案,这种问题常出现在利用VC的资源编辑器添加的字符串资源,而又碰巧,VC将资源ID定为了61446,这样在发布的时候,使用Release版本,而静态加载链接库编译时,MFC中afxres.h中61446已被使用过,就出现了同一ID被两次使用。解决的方法很简单,将自己写的那段资源ID改成比61446大些问题就解决了。
首先,打开工程文件夹。然后,用记事本打开“resource.h”文件,找到IDB_BITMAP1(或者61446,并记下它前面的IDB_******),并把它改为新数字号,我修改的是61447。然后,用记事本打开“工程名.rc”文件,找到IDB_******,并把它改为新ID号(我修改的是61447)。打开VC,把程序中的IDB_******改为新ID号(我修改的是61447),并保存。编译,运行即可。
打开VC: vc界面view->ID Resource Symbols 双击你要修改的资源ID,然后可以修改名字跟编号,再点确定就OK了!
但是这个问题解决了,又出现了些新的问题
fatal error C1010: unexpected end of file while looking for precompiled header directive但是我在编译的时候又没有出现这个问题的呀,软件可以运行,不知为什么发布的时候就不行了。
问题先留着里。。我再去找找解决方法
解决办法:
致命错误C1010:在寻找预编译指示头文件时,文件未预期结束。 就是没有找到预编译指示信息的头文件。 问题一般发生在:通过添加文件的方式,添加了一些cpp文件到一个MFC的程序,但该cpp文件并不是MFC,而是标准的C++。 解决方案1: 右键单击项目工程中的cpp文件,在菜单Project->Settings->C/C++->Precompile Header,设置为第一项:Not using precompile headers。 解决方案2:在.cpp文件开头添加包含文件stdafx.h。 #include"stdafx.h"
链接:http://www.cnblogs.com/love3c/archive/2013/02/25/2932536.html