【发布时间】:2009-06-01 22:55:11
【问题描述】:
编译时,我总是将它设置为 Any CPU。但是,有些客户没有所需二进制文件的 64 位版本,即使在 x64 系统上运行也是如此。在这些情况下,我要求他们使用 corflags.exe /32BIT+ 选项修改我的二进制文件:
http://msdn.microsoft.com/en-us/library/ms164699(VS.80).aspx
如果 64 位版本不存在,我想使其透明并在安装期间自己修改二进制文件。我宁愿不要自己调用 corflags.exe,因为这意味着我需要重新分发我们的运输要求中不允许的应用程序。
所以我的问题是;有没有办法自己以编程方式修改这个标志,或者直接修改二进制文件(它只是在文件本身的某处设置一个字节)?
【问题讨论】:
-
不确定您这样做是为了达到什么目的?
-
另一种解决方案可能是包含您正在使用的库的 64 位版本,如果用户拥有 32 位版本并且在 64 位机器上运行,则本地版本将在搜索中您的应用程序的路径,应该加载。
-
@Mitch:我们引用了第三方库,而不是开源的。它是一个 C++ 混合模式库。在早期版本中,只有 32 位版本可用。所以即使他们在 x64 机器上运行,他们也没有这个库的 x64 版本。我的工具是 C# 并编译为 Any CPU。因此,当它在其中一台机器上运行时,它找不到正确的 DLL。
-
@Average Joe:它是第 3 方库,不是开源的,我们不允许重新分发第 3 方工具(法律原因),这就是为什么我也不能只发送 corflags