vc2010下使用64位控件

原创 2012年06月30日 22:35:01
最近把我的控件(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
基本要点就是删除工程文件的里面的相关内容。

使用vs2010生成64位的dll文件

最近有个项目需要使用java程序调用c++编写的dll文件,由于之前没有涉及过此类要求,属于摸着石头过河,遇到各种问题,其中一个便是dll文件版本问题。 由于现在的jdk一般都是64位版本,所需要调...
  • l527719041
  • l527719041
  • 2017-08-20 21:32:40
  • 1286

关于Visual Studio 2010与64位系统的问题

这种问题是在论坛里经常被问到的问题:有没有64位的VS2010?Vs2010能不能编译64位的程序? 我的回答是这样的: 1. VS2010没有专门的64位版。但32位版可以在64...
  • XinYaping
  • XinYaping
  • 2012-03-31 08:40:26
  • 49133

使用VS在64位平台下编译代码,生成64位dll

最近要把一个之前在32位平台下编译的项目改成64位平台,之前从来没搞过关于64位的东西,所以到处查资料,所幸搞成功了,把过程记录一下,防止以后忘记。 首先声明:64位平台无法直接调用32位d...
  • woainishifu
  • woainishifu
  • 2017-01-04 14:30:57
  • 7274

vs2010 x64平台调用64位DLL问题

自己制作的DLL本来是在win32平台制作d
  • u011096141
  • u011096141
  • 2014-07-02 20:37:58
  • 1837

vc2010下使用64位控件

最近把我的控件(ST_Curve www.st-curve.cn)升级到了64位,2010编译,本来以为很简单的问题,结果折腾了两天(也有可能我多年没做过界面和vc相关的东西了吧),于是把我遇到的问题...
  • yang79tao
  • yang79tao
  • 2012-06-30 22:35:01
  • 8056

<em>VC++2010</em> <em>64</em>位

<em>vc++</em> x<em>64</em> 用于修复c++插件没有安装成功 游戏软件不能运行... <em>VC++2010</em> <em>64</em>位 会员到期时间: 剩余下载个数: 剩余C币: 剩余积分:0 为了良好体验,不建议<em>使用</em>...
  • 2018年04月14日 00:00

VC++2010 64位

  • 2016年12月20日 14:47
  • 17.94MB
  • 下载

VS2010使用richeditctrl

在工程文件的主函数文件中定义一个RichEdit控件句柄全局变量: static HWND hWinRich;             //注意是静态变量,我以前不用静态的变量,好像无法显示Ri...
  • chenzhisi
  • chenzhisi
  • 2013-10-09 17:27:20
  • 1126

pcl+vs2010+x64配置

先参考如下大神的配置过程: http://blog.csdn.net/u010025211/article/details/17279925 以及:http://blog.csdn.net/wishc...
  • ZHE123ZHE123ZHE123
  • ZHE123ZHE123ZHE123
  • 2016-06-30 23:14:00
  • 1616

用VC进行64位编程

本文转自:http://www.usidcbbs.com/simple/?t5247.html 查看完整版本: [-- 用VC进行64位编程 --] 美国主...
  • liuruihan
  • liuruihan
  • 2014-04-30 15:14:55
  • 19316
收藏助手
不良信息举报
您举报文章:vc2010下使用64位控件
举报原因:
原因补充:

(最多只允许输入30个字)