|
|
用户名:dorisk 笔名:dorisk 地区: TientSin 行业:其他 |
| 日 | 一 | 二 | 三 | 四 | 五 | 六 |
于千万人之中,遇见你所遇见的人;于千万年之中,时间的无涯荒野里,没有早一步,也没有晚一步刚巧赶上了。
网易游戏序列号发布
error LNK2001: unresolved external symbol VC++链接错误详解
学习VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时, 编译都已通过。产生连接错误的原因非常多,尤其LNK2001错误,常常使人不明其所以然。如果不深入地学习和理解VC++,要想改正连接错误 LNK2001非常困难。
初学者在学习VC++的过程中,遇到的LNK2001错误的错误消息主要为:
unresolved external symbol “symbol”(不确定的外部“符号”)
如果连接程序不能在所有的库和目标文件内找到所引用的函数、变量或标签,将产生此错误消息。一般来说,发生错误的原因有两个:
一是所引用的函数、变量不存在、拼写不正确或者使用错误;
二是可能使用了不同版本的连接库;
以下是可能产生LNK2001错误的原因:
一.由于编码错误导致的LNK2001。
1.不相匹配的程序代码或模块定义(.DEF)文件能导致LNK2001。例如,如果在C++ 源文件内声明了一变量“var1”,却试图在另一文件内以变量“VAR1”访问该变量,将发生该错误。
2.如果使用的内联函数是在.CPP文件内定义的,而不是在头文件内定义将导致LNK2001错误。
3.调用函数时如果所用的参数类型同函数声明时的类型不符将会产生LNK2001。
4.试图从基类的构造函数或析构函数中调用虚拟函数时将会导致LNK2001。
5.要注意函数和变量的可公用性,只有全局变量、函数是可公用的。静态函数和静态变量具有相同的使用范围限制。当试图从文件外部访问任何没有在该文件内声明的静态变量时将导致编译错误或LNK2001。
函数内声明的变量(局部变量) 只能在该函数的范围内使用。
C++ 的全局常量只有静态连接性能。这不同于C,如果试图在C++的多个文件内使用全局变量也会产生LNK2001错误。一种解决的方法是需要时在头文件中加入该常量的初始化代码,并在.CPP文件中包含该头文件;另一种方法是使用时给该变量赋以常数。
二.由于编译和链接的设置而造成的LNK2001
1.如果编译时使用的是/NOD(/NODEFAULTLIB)选项,程序所需要的运行库和MFC库在连接时由编译器写入目标文件模块, 但除非在文件中明确包含这些库名,否则这些库不会被链接进工程文件。在这种情况下使用/NOD将导致错误LNK2001。
2.如果没有为wWinMainCRTStartup设定程序入口,在使用Unicode和MFC时将得到“unresolved external on _WinMain@16”的LNK2001错误信息。
3.使用/MD选项编译时,既然所有的运行库都被保留在动态链接库之内,源文件中对“func”的引用,在目标文件里即对“__imp__func” 的引用。如果试图使用静态库LIBC.LIB或LIBCMT.LIB进行连接,将在__imp__func上发
生LNK2001;如果不使用/MD选项编译,在使用MSVCxx.LIB连接时也会发生LNK2001。
4.使用/ML选项编译时,如用LIBCMT.LIB链接会在_errno上发生LNK2001。
5.当编译调试版的应用程序时,如果采用发行版模态库进行连接也会产生LNK2001;同样,使用调试版模态库连接发行版应用程序时也会产生相同的问题。
6.不同版本的库和编译器的混合使用也能产生问题,因为新版的库里可能包含早先的版本没有的符号和说明。
7.在不同的模块使用内联和非内联的编译选项能够导致LNK2001。如果创建C++库时打开了函数内联(/Ob1或/Ob2),但是在描述该函数的相 应头文件里却关闭了函数内联(没有inline关键字),这时将得到该错误信息。为避免该问题的发生,应该在相应的头文件中用inline关键字标志内联 函数。
8.不正确的/SUBSYSTEM或/ENTRY设置也能导致LNK2001。
其实,产生LNK2001的原因还有很多,以上的原因只是一部分而已,对初学者来说这些就够理解一阵子了。但是,分析错误原因的目的是为了避免错误的发生。LNK2001错误虽然比较困难,但是只要注意到了上述问题,还是能够避免和予以解决的。
两个精选小软件
瑞星2008升级时操作被用户终止的解决办法
我安装的正版瑞星2007,这个月跨版本升级到2008版,感觉还不错,但是最近升级时出现了问题
也就是进行到“备份安装文件”那一步时,会提示“操作被用户终止”而使升级无法进行。
试过N多办法,关闭瑞星的主动防御、把setup。exe文件放进白名单、删除Rsconfig。cfg文件等等
可是皆不奏效~~~
我的电脑上同时安装了SSM,我想是不是它惹得祸,关掉SSM,问题依旧
由此可见,导致这个问题的原因肯定是瑞星自己把自己拦在了门槛外面。
于是打开IceSword,结束瑞星的相关进程
Bingo~~~ 问题解决
在此根大家分享一下:
1、打开IceSword,查看当前进程列表
2、结束“program files\rising\rav”目录下的所有进程
3、从“开始”菜单运行瑞星的“自动升级”
4、从“开始”菜单运行瑞星的“监控中心”
但是,总不能每次都这样啊,还是希望瑞星能把产品做的完善些。
文章中提到的软件下载:冰刃IceSword v1.22
认识CPI指数
什么是cpi指数?
消费者物价指数(ConsumerPriceIndex),英文缩写为CPI,是反映与居民生活有关的产品及劳务价格统计出来的物价变动指标,通常作为观察通货膨胀水平的重要指标。如果消费者物价指数升幅过大,表明通胀已经成为经济不稳定因素,央行会有紧缩货币政策和财政政策的风险,从而造成经济前景不明朗。因此,该指数过高的升幅往往不被市场欢迎。
CPI包括哪些项目?
中国的CPI包括食品、烟酒及用品、家庭设备用品及维修服务、衣着、医疗保健及个人用品、交通及通讯、娱乐教育文化用品及服务、居住等八类,但近几年来民众消费所占比重最大、价格上涨最厉害的消费支出项目并没有包括在CPI中,如民众教育消费、医疗保险、住房消费等。但是国际上一般都不将房价计入CPI中。
CPI涨幅与经济有何关系?
如果CPI升幅过大,表明通胀已经成为经济不稳定因素,央行会有紧缩货币政策和财政政策的风险,从而造成经济前景不明朗。因此,该指数过高的升幅往往不被市场欢迎。例如,在过去12个月,消费者物价指数上升2.3%,那表示,生活成本比12个月前平均上升2.3%。当生活成本提高,你的金钱价值便随之下降。也就是说,一年前收到的一张100元纸币,今日只可以买到价值97.70元的货品及服务。
一般说来当CPI>3%的增幅时我们称为INFLATION,就是通货膨胀;而当CPI>5%的增幅时,我们把他称为SERIES INFLATION,就是严重的通货膨胀。
当前经济运行主要矛盾和问题
当前经济运行中的主要矛盾和问题是:经济增长由偏快转为过热的趋势更为明显;贸易顺差过大、信贷投放过多、投资增长过快问题仍然突出;高耗能产业增长偏快,节能减排形势依然严峻;物价上涨压力持续加大,特别是一些涉及群众切身利益的食品价格和住房价格上涨较快。
CPI提速到底是谁惹的祸?
一般认为,本轮CPI上涨的动力在猪肉和鸡蛋价格的上涨,而猪肉、鸡蛋价格的上涨又在于粮食价格上涨、生猪蓝耳病疫情,从而导致这些产品的供不应求。根据国家发改委对全国36个大中城市的价格监测结果,6月份猪肉价格环比上涨12.3%