From 04:00 PM CDT – 08:00 PM CDT (09:00 PM UTC – 01:00 AM UTC) Tuesday, April 16, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.



VC中使用Measurement Studio ActiveX 控件时产生的编译错误



主要软件:
主要软件版本: 8.0.1
主要软件修正版本: 8.0.1
次要软件: Measurement Studio>>Measurement Studio for Visual Basic 6

问题: 在VC(MFC)中使用Measurement Studio ActiveX 用户控件,当为控件绑定一个成员变量时, 向导将生成一些封装代码并创建该变量,但是,编译的时候,会出现以下错误:

c:\CtrlDialog4\graph.h(748): error C2061: syntax error : identifier 'CWAnnotation'
c:\CtrlDialog4\graph.h(578): error C2061: syntax error : identifier 'CWPictureDisp'
c:\CtrlDialog4\graph.h(548): error C2061: syntax error : identifier 'CWPlot'
c:\CtrlDialog4\graph.h(512): error C2143: syntax error : missing ';' before '*'
c:\CtrlDialog4\graph.h(512): error C2501: 'CCwgraph1::CWPictureDisp' : missing storage-class or type specifiers


怎样消除该错误呢

解答: 这个错误是由于成员变量在运行Measurement Studio的添加/删除类库向导之前被创建,这使得Measurement Studio不能将其所提供的类与该ActiveX控件关联起来,执行以下操作来消除该错误:

  1. 从工程中删除添加变量向导生成代码的文件 (本例中为graph.hgraph.cpp,默认为cwgraph.h and cwgraph.cpp )。

  2. 从对话框的头文件或者添加了控件的类的头文件中删除 #include (本例中为graph.h )。

  3. 将成员变量(本例中为m_graph)的类型修改为CNiGraph。并用Measurement Studio提供的变量类型替换掉自动生成的变量类型。这些数据类型在Measurement Studio的帮助参考手册中有描述。 请参考Measurement Studio文档中的Using the Measurement Studio Visual C++ User Interface Controls 以获得更多信息
您遇到的问题是由于Visual C++为Measurement Studio ActiveX控件生成了代码,但是他并没有生成正确的代码. 该问题在 KnowledgeBase 2IECTLXL进行了描述与解释. Visual C++ 6.0生成了完整而复杂的代码,但是它并不能直接使用。

Measurement Studio 包含一个用户库来为Measurement Studio ActiveX控件提供接口。这些类以CNi为前缀命名。例如,图表控件的类是CNiGraph,坐标的类是CNiAxis. 除了具有完整的功能外,这些类比自动生成的代码具有一系列优点。这些优点包括函数重载、可从任何进程对控件进行访问、自动从COM数据类型进行转换,例如将BSTRSAFEARRAY转换为MFC数据类型,或者转换为基于MFC的Measurement Studio数据类型,如 CStringCNiReal64Vector

Visual Studio添加变量向导需要知道添加到工程中的变量的信息,以便向导确定在声明变量的时候使用哪些VC类.如果添加变量向导在C++工程中无法获取这些信息,将会生成代码,并会在工程文件中写入这些信息,

在您添加具有ActiveX接口的类库的时候,Measurement Studio 添加/删除类库向导和新建工程向导也会向工程文件中写入这些信息。但是,当你随后通过添加变量向导来声明变量的时候,Mesurement Studio向导能读取到之前写入到工程文件中的这些信息,因此它会使用Measurement Studio的类,而不会生成一个新的类,从而向导将Measurement Studio的类和ActiveX控件关联起来.

相关链接:

附件:





报告日期: 08/02/2004
最近更新: 09/22/2008
文档编号: 3C1FIB5B