深入浅出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模式的CChart_d.lib、CChart_d.dll,Release模式的CChart.lib和CChart.dll。

VC6默认使用的配置是多字节,也就是非Unicode的,使用笨笨发布的版本不会在这方面有什么困惑。但高版本VC默认使用的配置是Unicode的,这样只要使用了带字符串的函数,链接的时候就会出问题。

在第19课中,笨笨提出的解决办法是修改解决方案的默认配置,改成多字节,这样当然问题就解决了。

但是很多情况下,不是这么简单,有时候还真必须使用Unicode,比如使用了其它什么库,这时候怎么办呢?

当然笨笨会给大家解决问题的,新发布的CChart版本都包含了Unicode的库文件,目前库文件仍然是5个文件,但去掉了Debug模式的文件,增加了宽字节的文件,包括Debug模式下的CChartu.lib、CChartu.dll。

以前笨笨给大家推荐的包含库文件和头文件的方式如下。

 
#include "Chart.h"
#ifdef _DEBUG
#pragma comment(lib, "PlotDll_d.lib")
#else
#pragma comment(lib, "PlotDll.lib")
#endif
 


有了Unicode版本后,笨笨推荐大家把这段代码改成如下的方式。

#include "Chart.h"
#if defined(_UNICODE) || defined(UNICODE)
#	pragma comment(lib,"CChartu.lib")
#else
#	pragma comment(lib,"CChart.lib")
#endif


这样不管是否使用Unicode,都能正确链接到正确的库文件。

在高版本VC中,如果使用了Unicode,还需要一个设置才能编译成功。如图,在对话框中把Treat WChart_t As Build in Type设置为No。这个问题只存在于VC6编译的版本中,如果下载VS2010编译的版本,则不存在这个问题。

A1.4 Namespace问题

从4.0.0.1版本开始,CChart所有内容都放入了命名空间NsCChart之中,以避免潜在的变量与用户重名的风险。所以请大家加上下面这句话,不然会提示找不到变量名。

using namespace NsCChart;

A1.5 VS2019使用问题

在VS2019中打开一个Demo,编译,出现如下错误。

这个问题处理很简单,如图所示即可。就是把“启用函数级链接”改成“是”。

现在OK了,编译成功!

上面的Demo是由VC6生成的。VS2019有很多新特征,也有很多默认设置和VC6是不同的,这完全可以理解。

如果我们用VS2019新建一个项目,会遇到什么情况呢?

这就试一下,还是新建一个用到CChart的Windows桌面应用程序吧。编译一下,出了如下的幺蛾子!

问题就处在Chart.h中一些函数中参数默认的字符串上,如图。

解决问题的方法如图,把“符合模式”由“是”改成“否”。

好了,问题解决!

本节课暂时就说这么多,目前也没有发现什么严重的问题。这也说明CChart其实还是比较成熟了。

以后如果还有什么需要交代的,笨笨会随时更新。

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值