深入浅出CChart 每日一课——快乐高四第一课 白富美的困惑,高版本VC之点点滴滴
笨笨的CChart系列教程早已结束。在教程发布以后,收到很多反馈意见。原来的教程可能有的地方还是交代得不是特别清楚,因此笨笨准备做一些查漏补缺的工作,再增加几课的内容。
第十九课已经介绍了CChart在VS2010下的使用,本节课进一步介绍几点CChart在高版本VC下的使用注意事项。
笨笨用的高版本VC是2010版,对于其它版本,应该是差不多的,VS2012版本已经有网友测试过了,完全一样。
A1.1 目录问题这本来是一个小问题,不值一提,不过也有网友咨询过我。
用高版本VC建立一个解决方案后,VC将建立一个目录,例如Lesson19。但在这个Lesson19目录里面,还有一个Lesson19目录。
拷贝文件的时候,需要把CChart的头文件和库文件拷贝到内层的Lesson19目录里面,拷贝到外层的话,VC不认。
另外无论是VC6还是高版本VC,按照前面课程的说法拷贝CChart库文件后,在VC集成环境中启动程序,运行不会有什么问题,但如果进入Debug目录或者Release目录中启动程序,又会找不到Dll,这时候需要把对应的Dll文件拷贝到该目录中。
这些都是些小儿科的问题。
A1.2 VC运行时库的问题笨笨在网上发布的CChart是用VC6编译的,如果在高版本下使用,可能会出现找不到VC6运行时库的问题。
具体地说,就是在Debug模式下,缺少Msvcp60d.dll和Msvcrtd.dll两个文件,在Release模式下,缺少Msvcp60.dll和Msvcrt.dll两个文件。
解决方法很简单,从网上下载或者到其他电脑上拷贝这几个文件就可以了。
笨笨新发布的版本已经把这几个文件放进去了,免去了各位到处搜寻的麻烦。
当然最根本的解决方法是联系笨笨,笨笨可以用你所用的VC版本重新编译一下CChart,这样就不需要这几个文件了。
A1.3 Unicode问题笨笨最初发布的CChart版本不是Unicode的,里面的库文件共5个,头文件Chart.h,Debug模式的PlotDll_d.lib、PlotDll_d.dll,Release模式的PlotDll.lib和PlotDll.dll。
VC6默认使用的配置是多字节,也就是非Unicode的,使用笨笨发布的版本不会在这方面有什么困惑。但高版本VC默认使用的配置是Unicode的,这样只要使用了带字符串的函数,链接的时候就会出问题。
在第19课中,笨笨提出的解决办法是修改解决方案的默认配置,改成多字节,这样当然问题就解决了。
但是很多情况下,不是这么简单,有时候还真必须使用Unicode,比如使用了其它什么库,这时候怎么办呢?
当然笨笨会给大家解决问题的,新发布的CChart版本都包含了Unicode的库文件,目前库文件除了前面提到的5个文件外,还增加了4个Unicode版本的文件,包括Debug模式下的PlotDll_ud.lib、PlotDll_ud.dll和Release模式下的PlotDll_u.lib、PlotDll_u.dll。
以前笨笨给大家推荐的包含库文件和头文件的方式如下。
#include "Chart.h"#ifdef _DEBUG#pragma comment(lib, "PlotDll_d.lib")#else#pragma comment(lib, "PlotDll.lib")#endif
有了Unicode版本后,笨笨推荐大家把这段代码改成如下更长的方式。
#include "Chart.h"#ifdef _DEBUG#if defined(_UNICODE) || defined(UNICODE)#pragma comment(lib, "PlotDll_ud.lib")#else#pragma comment(lib, "PlotDll_d.lib")#endif#else#if defined(_UNICODE) || defined(UNICODE)#pragma comment(lib, "PlotDll_u.lib")#else#pragma comment(lib, "PlotDll.lib")#endif#endif
这样不管是否使用Unicode,都能正确链接到正确的库文件。
在高版本VC中,如果使用了Unicode,还需要一个设置才能编译成功。如图,在对话框中把Treat WChart_t As Build in Type设置为No。
本节课暂时就说这么多,目前也没有发现什么严重的问题。这也说明CChart其实还是比较成熟了。
以后如果还有什么需要交代的,笨笨会随时更新。博客文章不限制修改嘛。