gpt4 book ai didi

com - 如何安装 32 位和 64 位版本的 COM DLL 和 "auto-select"?

转载 作者:行者123 更新时间:2023-12-04 09:28:49 27 4
gpt4 key购买 nike

我们有一个 DLL(一个 COM 服务器),它可以在 32 位和 64 位中很好地编译,但是 DLL 对 32 位和 64 位版本使用相同的 CLSID 和 AppID。这是可以的还是必须改变?
我问这个是因为显然在 64 位机器上,我们不能同时注册 32 位版本和 64 位版本。如果 32 位客户端应用程序可以自动使用 32 位 DLL,而 64 位客户端应用程序可以自动使用 64 位 DLL,那就太好了。
在相关说明中,我们有客户端应用程序的源代码和 Visual Studio 2005 项目文件……我们如何编译同一应用程序的 32 位和 64 位版本?它是一个 C# 应用程序,它包含对我们的 COM 服务器 DLL 的引用,如下所示:

<ItemGroup> <COMReference Include="ComServer">

<Guid>{C1FADEA6-68FD-4F43-9FC2-0BC451FA5D53}</Guid>

<VersionMajor>830</VersionMajor> <VersionMinor>0</VersionMinor>

<Lcid>0</Lcid> <WrapperTool>tlbimp</WrapperTool> <Isolated>False</Isolated>

</COMReference> </ItemGroup>


如果事实证明我们需要一个单独的 64 位 CLSID,我们如何在 Visual Studio 中使这个引用“仅适用于 32 位配置”?或者我们是否必须拥有具有相同源代码的单独项目:一个引用 32 位 DLL,另一个引用 64 位 DLL?

最佳答案

两个版本都可以(并且确实应该)对所有内容使用相同的 GUID。

在 32 位机器上你不能注册或使用 64 位 DLL,所以那里没有问题。 64 位 DLL 根本不输入图片。

在 64 位机器上,64 位 DLL 在 HKLM/Software/Classes/CLSID(等)中注册,32 位 DLL 在 HKLM/Software/Wow6432Node/Classes/CLSID 中注册。 (我想知道你从哪里得到的建议,你不能在 64 位机器上注册 32 位 DLL ......)在 64 位机器上运行的 32 位客户端将在注册表中的正常位置查找,但操作系统会以静默方式将其重定向到 Wow6432Node 键。

关于com - 如何安装 32 位和 64 位版本的 COM DLL 和 "auto-select"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4403501/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com