最近把我的控件(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. Struts2 学习笔记16 struts标签 part2

    接下来说一下if标签.下面是结果图. <li><s:if test="#parameters.age[0]<0">error!</s:if> ...

  2. leetcode第一刷_Binary Tree Inorder Traversal

    递归实现当然太简单,也用不着为了ac走这样的捷径吧..非递归实现还挺有意思的. 树的非递归遍历一定要借助栈,相当于把原来编译器做的事情显式的写出来.对于中序遍历,先要訪问最左下的节点,一定是进入循环后 ...

  3. struts2_4_为Action属性注入值

    Struts2为Action中的属性提供了依赖注入功能,在struts2的配置文件里,能够为Action中的属性注入值,属性必须提供setter方法. 1)employeeAction类: publi ...

  4. js中with、this的用法

    with 语句 为一个或一组语句指定默认对象. 用法:with (<对象>) <语句>; with 语句通常用来缩短特定情形下必须写的代码量.在下面的例子中,请注意 Math ...

  5. BZOJ 1110: [POI2007]砝码Odw( 贪心 )

    ORZjcvb... #include<bits/stdc++.h> using namespace std; ; int N, M, item[maxn], V[maxn]; vecto ...

  6. java io学习记录(路径分隔符)

    java路径分隔符(路径表示) path="E:\\xp\\test\\2.jpg"; path="E:/xp/test/2.jpg"; path=" ...

  7. Jquery学习笔记:事件处理基础介绍

    一.引子 给html的元素添加一个响应事件,最简单的办法是直接在元素标签内填写事件属性,先看一个最简单的例子 <!DOCTYPE html> <html lang="zh- ...

  8. Linux进程阻塞的相关知识

    1.如果驱动程序无法立即满足要求,该如何响应? 当数据不可用时,用户可能调用read:或者进程试图写入数据,但因为输出缓冲区已满,设备还未准备好接受数据.调用进程通常不会关心这类问题,程序员只会简单调 ...

  9. asp.net后台对前台脚本的调用

    后台像前台输出要执行的脚本 Response.Write("<script>alert('内容')</script>"); asp.net后台调用前台js脚 ...

  10. Cocos2d-x 3.2 大富翁游戏项目开发-第七部分 获取角色路径_3

    点击下载代码   http://download.csdn.net/detail/lideguo1979/8291803 新建一个类RouteNavigation,定义getPath()方法.用来获取 ...