我们的应用程序到目前为止只使用了32位二进制文件,这已经足够了。 我们慢慢地看到需要为某些组件引入64位版本(除了32位版本),主要是为了与我们自己没有编写的其他64位组件接口。
突然出现的一个问题是我们是否要将64位组件(EXE + DLL)命名为与32位对应组件完全相同,并将它们放在另一个目录中,或者是否以不同方式命名(例如tool.exe
为32位和tool64.exe
for 64bit)并将它们保留在同一目录中。
对于大多数Windows组件(WoW64),微软似乎已经走了不同目录和相同名称的路线,如果整个应用程序都是64位,我们也可以使用Program Files
与Program Files (x86)
目录。
然而,在我们的例子中,我们有一个大部分32位应用程序,它使用一些64位组件(可执行文件)来做64位的东西,其中一些我们也有一个32位版本也可以使用。
那么,我们是否重命名组件并将它们放在同一个二进制目录中,或者我们是否保持二进制名称相同并将其放入子目录中?
有什么优点和缺点?
答案 0 :(得分:1)
如果我们谈论的是单个应用程序,那么所有文件都应保存在一个目录中。含义,PF或PF(x86)。但不会传播。
关于组件,请问问自己。 这些组件是否可以互换使用,还是并行使用?
如果它是前一个,那么它们具有相同的名称,这将简化您的部署。但是,如果两者都可以同时使用,例如,32位进程和64位帮助程序使用的DLL,则拆分名称。否则,您将需要拆分目录结构。
答案 1 :(得分:0)
现在我必须链接到64位增强库DLL。
将32位DLL have the same name作为32位对应文件并在Boost Build中加there is no built-in way以更改输出名称creating additional work,如果您希望它们位于同一目录中。
Looking around,seems,例如Qt在其DLL中不包含任何平台或位数标签,如果您在同一目录中需要32位和64位,则会再次产生问题。
因此,如果您的应用程序中有第三方DLL依赖项,并且您需要同时安装32位和64位应用程序,那么无论您如何命名可执行文件(或者您的DLL)本身,将它们放入不同的目录似乎是一个好主意,因为它很容易使用第三方的东西,而不是标记"它的DLL具有位度,因为there really isn't a good way从同一目录加载不同的同名DLL(除非你将它们放入System32
/ SysWOW64
,你不应该&# 39; t)的