【发布时间】:2011-05-23 03:44:23
【问题描述】:
我们有一个可以在 32 位和 64 位中正常编译的 DLL(COM 服务器),但 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?
【问题讨论】:
标签: com 32bit-64bit