最近把我的控件(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

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

  1. Delphi下使用Oracle Access控件组下TOraSession控件链接

    Delphi下使用Oracle Access控件组下TOraSession控件链接数据库,使用  orsn1.Options.Direct:=true;  orsn1.Server:=IP:Port: ...

  2. 如何在安装32位Oracle客户端组件的情况下以64位模式运行

    C#使用System.Data.OracleClient连接Oracle数据库.之前在WinXP上正常运行的程序移植到Windows 2008 x64上之后就连不上数据库了,错误信息如下:启动data ...

  3. 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。

    从10G开始,Oracle提供了一个较为轻量级的客户包,叫做Instant Client. 将它安装好后,就不用再安装庞大的Oracle Client了. 这样一来,只要客户端下载Instant Cl ...

  4. Silverlight中在MVVM模式下对DatagridRow选择控件封装

    在项目中,凡是涉及到表格的地方用的最多的控件,自然少不了DataGrid的身影,它明了的展示各种数据让人十分喜欢.现在要实现一个功能,使DataGrid具有全选和项选中的功能,如果在传统后台代码中完成 ...

  5. 如果在安装32位oracle 客户端组件时的情况下以64位模式运行,将出现问题

    今天要写个程序,环境是win7+ vs2008+ oracle.首先得保证能连接到数据库.确认代码是没有问题的,但是拿过来直接.报错: “尝试加载 Oracle 客户端库时引发 BadImageFor ...

  6. cocos2d-html5 简易 下拉表单 控件

    刚才在CH5的群里问了问  有没有大侠写过 下拉表单控件啊!  没人鸟窝 ,DZ老师表示非常伤心啊  ,于是乎  自己写一个把 共享给大家. 效果图上一个  仅仅实现了一个最最主要的控件  非常eas ...

  7. Asp.Net2.0下C#环境 Login控件实现用户登录

    原文:Asp.Net2.0下C#环境 Login控件实现用户登录 一.前台显示效果 二.前台代码             <asp:Login ID="Login1" run ...

  8. Ubuntu 16下安装64位谷歌Chrome浏览器

    Ubuntu 16下安装64位谷歌Chrome浏览器 1.将下载源加入到系统的源列表 在终端中,输入以下命令: sudo wget https://repo.fdzh.org/chrome/googl ...

  9. “尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。”

    远程连接服务器的数据库调试WCF程序时,可以正常访问数据库,但将程序发布成站点部署在数据库所在的服务器之后,一直报错,通过try/catch捕获得到以下报错信息: System.Exception: ...

随机推荐

  1. POJ1273 最大流 EK算法

    套了个EK的模板 //#pragma comment(linker, "/STACK:16777216") //for c++ Compiler #include <stdi ...

  2. 简单cpu处理器

    在135例中有一个简单处理器的程序,稍作修改成自己的风格 //date :2013/8/22 //designer :pengxiaoen //function get a mpc with veri ...

  3. 二、Mongo命令初识

    简单介绍mongo的一些基本命令 1.   连接与登陆mongo 在命令行输入“mongo”命令即可登陆Mongo数据库(PS:默认讨论被信任的环境,也就是不需要用户名和密码进行登陆). 查看当前所使 ...

  4. zabbix 添加主机成功失败判断

    zabbix 成功添加后: $VAR1 = bless( { 'version' => 0, 'content' => { 'jsonrpc' => '2.0', 'id' => ...

  5. ADB logcat 过滤方法(抓取日志)

    1. Log信息级别 Log.v- VERBOSE  : 黑色 Log.d- DEBUG  : 蓝色 Log.i- INFO  : 绿色 Log.w- WARN  : 橙色 Log.e- ERROR ...

  6. Shell之sed命令

    sed用于一次性处理所有的编辑任务,尤为高效,为用户节省了大量的时间,sed适用于以下三种场合: 1.编辑相对交互文本编辑器而言太大的文件: 2.编辑命令太复杂,在交互式文本编辑器中难以输入的情况: ...

  7. 简要解析XMPP框架及iOS-Objective-C的使用

    前言:这两天看了XMPP框架,查阅了一些资料,写下这篇文章记录一下学习笔记 一.简要解析XMPP核心部分 XMPP框架分为两个部分 1.核心部分 2.扩展部分 扩展部分主要讲好友列表(roster). ...

  8. Multiple bindings were found on the class path(转)

    Multiple bindings were found on the class path SLF4J API is designed to bind with one and only one u ...

  9. 清华集训2014 day2 task1 简单回路

    题目 如题. 算法 就是刚学习的插头DP. 从前往后和从后往前分别进行一次DP. 要点 合法的括号序列只有103个 如何合并两次dp的信息 一开始犯傻了,以为当且仅当两个轮廓线的状态相同才是合法的方案 ...

  10. Android4.2以及最新SDK的尝鲜使用

    谷歌已经公布了Android4.2,而且也对应的更新了SDK到4.2.事实上最基本的是谷歌这次帮开发人员把eclipse.ADT.SDK整合 到了一起,我们仅仅须要下载一个ADT Boundle,就能 ...