vc2010下使用64位控件

最近把我的控件(ST_Curve www.st-curve.cn)升级到了64位,2010编译,本来以为很简单的问题,结果折腾了两天(也有可能我多年没做过界面和vc相关的东西了吧),于是把我遇到的问题罗列一下,希望对需要的人有所帮助(验证的不是很充分,不保证百分之百正确)

一:如果一个很老的工程(比如vc6),最好不要直接用vc2010的ide转换工程,而是在vc2010下新建一个工程,再把代码拷贝过来。通过转换的方法,带来一个典型的问题就是,64位版本的输出位置和32位的完全相同,这样编译64位版本时,必将覆盖32位版本的输出,当然这个问题可以通过修改工程解决,但麻烦,而且就算解决了,也不通用,比如标准的输出目录的写法是:$(SolutionDir)$(Platform)\$(Configuration)\,你自己去写,很可能不会写成这个样子;

二:64位程序只能使用64位AcitveX(推测),32位程序只能使用32位AcitveX(实测),但我在网上似乎看到某人说过,ActiveX的位数与容器的位数无关,不知道是他对还是我对;

三:vc6工程用vc2010 ide直接转成vc2010工程,再添加一个x64配置,此时原来的32位编译运行都没有问题,而64位的编译正确,却不能运行(64位AcitveX已经安装),在vc2010下新建一个工程,添加ActiveX,再编译运行,则64位和32位都能运行(这进一步说明了我上面说的,太老的工程直接转vc2010工程有些麻烦);

四:64位和32位ActiveX可以同时存在于同一个系统,他们在注册表中被储存在不同的位置;

五:如果只有64位ActiveX,则在vc2010 ide里面“插入AcitveX”的时候,找不到控件;我想可能是,ide是32位的(一般情况下都是32位的,各位可以看看自己的vc2010是多少位的);如果再为系统安装一个32位的AcitveX,则“插入AcitveX”的时候,可以找到控件,这个控件的位置显示是32位ActiveX的位置,添加控件到工程之后,可以为控件生成包装类,这个跟vc6差别不大,无非是默认的类名不一样,代码写的位置不一样(vc2010都写在了.h文件里面)。此时为工程增加一个x64配置,仍然可以在ide里面看到控件,只是用的仍然是32位的控件,编译之后运行,则使用的是64位控件(没有64位控件时,将不能运行程序,所以ide中看见控件已经显示了,但运行时出错,是完全有可能的)。

六:对于上面第五点说的,如果我只想编译64位程序,那岂不是要同时安装32位和64位控件,简单来说,是的。但控件是可以动态创建的,只要你不在ide中拖控件,是不需要安装32位控件的。但这会带来一系列麻烦,由于在“插入AcitveX”找不到控件,也就无法为控件生成包装类(可以去其它机器上拷贝),也就无法操作控件的属性、事件等等。一劳永逸的办法可能是安装64位vc2010了(如果有的话,我感觉它不一定有,因为它支持交叉编译,提供一个32位版本就基本够了)。

七:在vc2010中,如果控件接口有修改,想要对一个已经生成包装类的工程重新生成接口(获得更新),很是麻烦,我找了好久,才发现一个方法,当然不排除还有更更好的方法,这个方法见我在CSND提的问题:
http://topic.csdn.net/u/20120711/22/eeaf333d-5072-463b-9f4c-a738b8b590b7.html
基本要点就是删除工程文件的里面的相关内容。

 

from:http://blog.csdn.net/yang79tao/article/details/7705754

时间: 2024-10-10 20:29:50

vc2010下使用64位控件的相关文章

有没有好一点的下拉式日历控件呢

问题描述 本人是初学.net,现在碰到一个下拉日历的问题,有哪位前辈可以支持一下,给俺一个下拉日历的控件呢. 解决方案 解决方案二:my97http://www.my97.net/解决方案三:http://blog.csdn.net/21aspnet/archive/2007/05/14/1607712.aspx解决方案四:引用1楼oec2003的回复: my97http://www.my97.net/ 解决方案五:my97真的好用,强烈推荐给lz解决方案六:Infragistics,我一直在用

在VS.NET下创建文件上载控件

创建|控件 在VS.NET下创建文件上载控件 前言:还记得在asp3.0里,我们为了上载文件可真是煞费苦心,写了一大堆的代码,可执行起来还是那么慢.但在asp.net里这个问题可以轻松搞定,这篇文章我们就探讨如何建立一个用户自定义的文件上载控件,并在我们的.ASPX程序中使用它.正文第一步:开发自定义文件上载控件打开VS.NET,建立一个工程:WebApp,我们使用WebApp项目来做我们的工作.在项目WebApp上点右健选择Add下的Add Web User Control-,这时我们就可以建

ASP.net下的前台日历控件源代码

asp.net|控件|日历|源代码 #region 声明//----------------------------------------------------------------------//// 作者: 李淼(Nick.Lee)//// ASP.net下的前台日历控件源代码(不刷新页面) // 时间:2005-3-15 // boyorgril@msn.com// QQ:16503096//注意:引用请标明出处,谢谢//-------------------------------

ASP.net下的前台日历控件源代码(不刷新页面)

asp.net|控件|日历|刷新|页面|源代码 #region 声明//----------------------------------------------------------------------//// 作者: 李淼(Nick.Lee)//// ASP.net下的前台日历控件源代码(不刷新页面) // 时间:2005-3-15 // boyorgril@msn.com// QQ:16503096//注意:引用请标明出处,谢谢//-------------------------

div模拟下拉菜单select控件模块 css实现表单select美化

     div css模拟实现form表单下拉select控件美化与功能实现.可以实现模拟的select表单下拉提交数据传值功能     使用方法与调用方式:$.divselect("#divselect","#inputselect"); "#divselect" 这是哪个模拟列表的盒子的ID,"#inputselect"这个是选择以后给 id="inputselect" 的input隐藏域赋值的哦.

如何在32位系统下安装64位系统

  在论坛看到很多网友提问说32位系统下无法安装64位Windows7系统,这里推荐一个很简单的方法来在32位系统下安装64位系统. 32位系统可以是任意,比如XP,Vista,Windows7的32位. 64位系统同样可以是任意. 安装方法就是我们一直推荐的NT6安装,安装前请先检验文件的MD5值. 如今,估计只有用XP的才用GHOST版系统了吧?对于windows7与windows8我想大多数都是用原版了,不管怎么说官方的还是最干净最放心的,更何况安装速度也不慢了. 而32位与64位,32位

mscomm32 ocx-windows7下调用MSCOMM32.OCX控件失败

问题描述 windows7下调用MSCOMM32.OCX控件失败 目的: 在JSP页面中调用MSCOMM32.OCX控件处理串口打印,打印机用的是EPSON TM-T81小票打印机,在XP中通过IE访问调试通过,可以正常打印,在win7下打印失败,现希望在win7下可以正常打印 已处理的问题 MSCOMM32.OCX已拷贝至C:WindowsSysWOW64下 已在C:WindowsSysWOW64下执行 regsvr32 MSCOMM32.OCX注册成功 已在注册表注入如下内容 [-HKEY_

32位Linux下安装64位Hadoop的问题

问题描述 32位Linux下安装64位Hadoop的问题 本人最近在学习Hadoop, 使用的版本为2.5.2,目前已经在Linux环境下搭建好了. 但是现在在hadoop中建立上传文件目录时,碰到如下问题: 在/hadoop-2.5.2/bin下执行: ./hdfs dfs -mkdir -p ~/hdfile 之后报出错误提示信息: Java HotSpot(TM) Client VM warning: You have loaded library /home/wluser/hadoop-

java-请熟悉Java swing的大神帮忙看下这是什么控件

问题描述 请熟悉Java swing的大神帮忙看下这是什么控件 就是常见的这种提示框,Java有没有这种控件?叫什么名字? 解决方案 这是用JComponent的一个方法实现的,方法名为public void setToolTipText(String text) 例如我最近用给 JLabel添加提示语, 代码如下: JLabel lbl_setOutput = new JLabel(); ...... lbl_setOutput.setToolTipText("修改输出目录"); 效