我有一个商业产品,这是一个DLL(本地32位代码),现在的时间来建立它的64位版本。因此,在64位Windows安装时,在32位版本进入的Windows \ Syswow64资料,而64位版本的进入...... Windows \ System32下! (我在这里咬我的舌头......) 或DLL(一个或多个)可装沿着客户端应用程序。

我应该命名为64位的DLL?

相同的名称,32位:两个文件做同样的事情,有相同的名称,但完全不可互换。这难道不是混乱和支持问题配方?

不同的名称(例如product.dll和product64.dll):现在客户端应用程序必须知道它们是否运行32位或在顺序的64位来引用我的DLL,并且存在是未知的语言直到运行时间 - .NET是一个例子。现在所有的静态编译客户端必须实现条件的进口报关手续:如果目标= WIN64然后从“product64.dll” ELSE进口布拉赫从“product.dll”导入胡说ENDIF

该产物含有大量的C代码,和一大块的C ++ - 它移植到C#是不是一种选择

么?建议?

有帮助吗?

解决方案 3

我已经决定按照微软这次,当他们去到64位谁也保持在System32中的DLL文件相同的名称。上的Win7 / 64,SYSTEM32 \ avicap32.dll是一个64位的DLL!

有一些潜在的混淆为自己和我的客户,具有相同名称的32位和64位的DLL。不过,我认为这将是雪上加霜有我所有的客户必须让他们的代码字宽敏感。尤其是.NET开发人员,谁可以经常离开自己的目标平台设置为“AnyCPU”。

其他提示

客户端应用程序的必须 “知道” 它们是32位或64位。操作系统自动地从适当的位置加载的DLL,因为它是不可能的一个32位的DLL加载到64位的过程,它是不可能的一个64位的DLL加载到32位的处理。

如果32位应用程序的尝试负载从SYSTEM32东西时,OS将静默它重定向到SYSWOW64目录,迫使32位版本的负荷。

由于具有不同的名称,你击败这整个机制。特别构建的机制,以允许您使用相同的名称。

为什么不前缀dll的用下划线...如 product_32.dll product_64.dll ?或通过使用平台前缀表明该 - 的 product_x86_32.dll 和<强> product_x86_64.dll ?至少,这将清除DLL的命名混乱......你觉得呢?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top