C# 写的32位COM组件,如何在64位系统上注册

在64位Windows系统上,32位COM组件注册遇到问题,通过尝试使用64位RegAsm、编译为64位DLL以及AnyCPU,最终发现将组件放在SysWOW64目录并使用对应的注册命令成功解决了问题,允许32位Delphi程序正常调用。
摘要由CSDN通过智能技术生成

之前,用c#写了一个COM组件,可以被Delphi的程序调用,而且已经使用在几个项目中,部署环境在XP和WIN7 32位都可以正常运行.

但最近一个项目,部署环境是WIN7 64位系统.使用写好的bat文件注册不成功,

运行到 RegAsm 时,总时提示 无法定位输入程序集 '....dll'或它的一个依赖项.


看了下RegAsm的命令:

%WINDIR%\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe /codebase %WINDIR%\System32\*.dll


dll文件放到了C:\Windows\Syste32\下, 经过反复确认,路径没有问题.那肯定是依赖项的问题了.可是具体是什么原因呢.


首先推测是不是需要用64位的RegAsm.

顺着RegAsm的路径找下去,果然在 %WINDIR%\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe 下也找到了这个文件.


然后修改注册命令为:

%WINDIR%\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe /codebase %WINDIR%\System32\*.dll

依然注册失败,不过提示的命令变成了"不是有效的程序集,因此未能加载它".

这里的问题很显然,是因为把32位的dll按64位来加载导致的.


然后我试着把程序编译成64位Dll, 用64位的RegAsm注册,结果提示注册成功.这个结果是可以预见到的.

但问题来了.我的Dll是需要让Delphi来使用的.而Delphi只能是32位程序.所以,Delphi打开的时候出现了问题.


这时我想,如果我把程序编译成AnyCPU,然后用64位的RegAs

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值