VS+TeeChart控件调试笔记

来源:互联网 发布:视频会议软件好? 编辑:程序博客网 时间:2024/05/22 16:00

VS+TeeChart控件调试笔记

情况说明:

光谱显示工程(64 Bit Window10+VS2015+TeeChart8),在原来的机子上能运行,拷贝之后运行不了。

 

问题所在:

导入TeeChart控件时,用了绝对路径,导致无法打开文件;另外,TeeChart8.ocx在使用时必须先注册,否则无效。而且只能在x86下运行,x64会意外中断。

解决方法:

把导入路径改成相对路径(已经修改完毕),然后注册TeeChart8.ocx,在x86下运行即可。

 

具体调试记录:

1. C1083 无法打开类型库文件:

“F:\\Hyperspectral\\USGS-SPLib06\\SP_Demo\\teechart\\TeeChart8.ocx”:No such file or directory   SP_Demo       e:\project\sp_demo\sp_demo\ctitles.h       3           

【把路径(teechart文件夹)修改成相对路径,7C**.h都要修改

#import "..\\teechart5+8\\TeeChart8.ocx" no_namespace

2.触发中断

SP_Demo.exe!CSP_DemoApp::InitInstance() 75  C++

注册TeeChart8.ocx以后,换成32位运行即可。

先注册TeeChart8.ocx,再运行(x86)。

注册:如果是 64位机子,拷贝teechart文件夹中的TeeChart8.ocxC:\Windows\SysWOW64中,然后以管理员身份运行cmd.exe,执行命令cd C:\Windows\SysWOW64 ,进入到这个目录,再执行regsvr32 TeeChart8.ocx(如果是32位机子,则拷贝到C:\Windows\System32,其他步骤类似)。

注册成功后, ReleaseDebug(x86),运行即可。

 

 

 

其他:(在网上查找的相关错误解决方法笔记)

1.    关于TeeChart控件

安装完了无非就用到个.ocx文件,还有就是自带很多MFC的例子,下载了个TeeChartocx文件,注册就好了。

若没有注册,则会显示:找不到#import**** TeeChart5.tlh

 

2.    关于中断在入口函数int nResponse =dlg.DoModal();

int nResponse = dlg.DoModal();

//有模式地显示这个对话框,直到对话框关闭。保存一个模式对话框的返回结果,如果是按ok退出的,则nResponse=IDOK,否则nResponse = IDCANCEL,这样就可以做不同的处理。

如果中断在此,可能的问题:

——》DoModal调用没有成功

——》没有为指针申请空间之类的问题

※看看InitDialog中是否有问题

看看Dialog中是否有在运行机器上未注册的控件.

中断以后,用F11跟踪进去,以下是整理的网友的方法

断在某处

处理方法

备注

"CreateDlgIndirect"这个函数里面

【在vc140.pdbMFCApplication1.pch文件中】

在代码中添加了ActiveX控件,确没有用到。所有果断的删去了

dll中生成对话框,如果包括了ActiveX控件,在创建对话框失败时,需要考虑在CApp::InitInstance()中添加OleInitialize(NULL) & AfxEnableControlContainer()

if (CreateDlgIndirect(lpDialogTemplate, CWnd::FromHandle(hWndParent), hInst))

dialog resource找不到,或者,parent窗口没传对或不存在。

 

 

 

ASSERT(FALSE);

把资源中的某个控件删除了,

并且DoDataExchange还在使用这个控件的ID

查找对应的IDDEFINE,看看是否在DoDataExchange使用。

并且此ID无相关的在.rc文件中的定义。

 

3.    删除了控件,但还在用ID

若是修改了控件,保存工程之后,再打开删除该控件,则resourse.h中还有该控件的信息,rc文件中没有。删除控件,需:1.删除控件方法的声明和实现(.h.cpp中找到映射的函数名删除即可)2.如果控件有关联变量,要在相应的头文件中删除。3.在资源文件中删除相应的控件资源ID( :#define IDC_BUTTON1 100 )

 

4.    关于新建MFC工程调用TeeChar

http://www.cnblogs.com/qiengo/p/4238567.html

※类中的头文件第一句:#import "D:\\ProgramFiles\\TeeChart Pro v5 ActiveXControl\\TeeChart5.ocx",(自动加入import+ TeeChart5的安装路径)

都提示"Error:无法打开源文件E:\project\MFCApplication1\MFCApplication1\Debug\Teechart5.tlh"

注意:#include "CSeries.h"要放在MFCApplication1Dlg.cpp文件#include"stdafx.h"等后面

CTChart.hclass CTChart : publicCOleDispatchDriver

ColeDispatchDriver不是类名或结构名

没有解决

※运行成功后出现一样的中断——intnResponse = dlg.DoModal();

————》换成release X86即可

 

 

 

 

 

 

原创粉丝点击