草庐IT

c++ - 如何确定我们使用的是真正的 48、56 还是 64 位指针

我正在使用一些技巧在指针中存储额外的信息,目前有些位没有在指针中使用(最高16位),但这在未来会改变。我希望有一种方法来检测我们是否正在编译或运行在将使用超过48位的指针的平台上。相关内容:Whycan'tOSuseentire64-bitsforaddressing?Whyonlythe48-bits?http://developer.amd.com/wordpress/media/2012/10/24593_APM_v2.pdfx86-64、Windows、C/C++需要解决方案,最好是可以在编译时完成的解决方案。其他平台的解决方案也很有趣,但不会标记为正确答案。

python - 如何从 32 位 Python 访问 64 位 Windows 环境变量?

是否有一些相当简单的方法从32位Python读取64位Windows环境变量?例如默认值为os.environ['ProgramFiles']在32位环境中是r'C:\ProgramFiles'(这就是os.environ在32位Python中报告的内容),但在64位环境中是r'C:\ProgramFiles(x86)'环境。我想从32位Python获取64位版本的变量。怎么办?=================================================================问题的这一部分是对那些迫不及待想说“你为什么要这样做?”或“这不是这样做是个好主

windows - 64 位 Windows 中的程序集系统调用

我在Windows10上安装了Cygwin。我一直在使用Cygwin编译/汇编c和汇编程序,使用Cygwin安装的“gcc”和“nasm”。据我所知,nasm有一个-fwin64模式,所以它可以汇编64位程序。现在,对于windows上的x64汇编编程,youtube似乎缺少教程。youtube上的大多数汇编编程教程都是针对x64linux或x32windows的,我需要能够在x64windows上将字符串打印到控制台,而无需使用任何外部函数,例如C的“printf”。对我不起作用的StackOverflow链接:64-bitwindowsassembler据我所知,nasm确实支持使

c++ - 为 64 位编译 Microsoft Detours

detours包声称支持64位但我没有看到编译64位二进制文件的方法:Detouring32-bitand64-bitProcesses使用nmakeall只编译32位东西:>dirVolumeindriveDisVolumeVolumeSerialNumberisXXXX-XXXXDirectoryofD:\Detours06/21/201803:46PM.06/21/201803:46PM..06/23/201808:13PMbin.X8606/20/201709:03AM5,105CREDITS.TXT06/22/201703:06PM31DetoursVersion3.0Bui

windows - 从 32 位应用程序使用 64 位驱动程序

我有一个必须以32位运行的Windows应用程序(因为我无法控制的其他限制)。但是,我的应用程序必须调用和访问可能是32位或64位的驱动程序,具体取决于安装它的系统。我通过DeviceIoControl()调用访问驱动程序,交换包含文件中声明的数据结构。数据结构包含声明为“DWORD_PTR”的字段(我也不控制的包含文件)。我的问题是,在64位系统上,驱动程序希望结构包含64位整数(因为DWORD_PTR声明)。但是,我的32位程序将那些DWORD_PTR视为32位整数。然后,我的数据结构程序版本与驱动程序对这些结构的理解之间存在数据不匹配。DeviceIoControl()最终因ER

ruby-on-rails - 你如何让 rmagick 在带有 rails 3.1 和 carrierwave 的 Windows 7 64 位上工作?

我无法让rmagick在Windows上工作。有谁知道如何让它正常工作?甚至更好,希望以与生产环境兼容的方式,尽管我会尽我所能。C:\>geminstallrmagick--platform=ruby----with-opt-lib=%IMAGE_MAGICK_HOME%/lib--with-opt-include=%IMAGE_MAGICK_HOME%/includeTemporarilyenhancingPATHtoincludeDevKit...Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstalling

c# - 在 64 位计算机上以 32 位运行 C# 应用程序

如何强制我的应用程序在64位计算机上以32位运行?代码是用C#写的。 最佳答案 右键单击您的项目,然后选择属性。在属性中,选择构建选项卡。在平台目标下,选择x86。按Ctrl+Shift+S保存所有文件,右键单击解决方案并选择“清理”以清除旧的二进制文件.之后的任何构建都应该是32位 关于c#-在64位计算机上以32位运行C#应用程序,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions

c# - 如何绕过 Marshal.Copy(32 位)长度限制?

我正在尝试在托管(C#)和非托管(C++Win32)代码之间来回移动数据。我可以使用Marshal.Copy它工作正常,直到数据集变大>2GB因为Marshal.Copy有一个带符号的32位int(2GB)长度限制。知道如何解决这个问题吗?目前,我在托管端使用AllocHGlobal(IntPtr),在非托管端使用.ToPointer()。如果我不能使用Marshal.Copy来回移动大数据(>2GB)我可以使用什么? 最佳答案 我的第一react是:为什么要复制2GB以上的数据?也许您的应用程序约束不允许这样做,但在我看来,如果您

c# - 对构建 32 位或 64 位感到困惑

我有一个包含多个项目(C#WPF应用程序和类库)的VS2013解决方案。每个项目的“平台目标”都设置为“任何CPU”。我的印象是生成的EXE将在64位PC上作为64位应用程序运行,在32位PC上作为32位应用程序运行。这个对吗?我的开发PC是64位的,但是当我运行应用程序(独立运行或通过VS调试)时,它在任务管理器中显示为“foo.exe*32”。这是怎么回事?我们有一个32位机器的初级开发人员。他是否仍然能够打开解决方案并在VS中运行它?此外,一些项目引用了第3方DLL。供应商同时提供32位和64位版本-项目应该引用哪个版本?如果我引用32位DLL,这是否会阻止应用程序作为64位应用

c# - 带 3 个尾随小数位、十进制千位分隔符和逗号的格式数字

这可能是一个简单的问题,我相信有办法用string.format()、NumberFormatInfo、CultureInfo或它们的某种组合,但我需要显示带有3个尾随小数位的大数值,一个小数而不是千位分隔符的逗号,然后是百万分隔符及以上的逗号。输入是整数或后跟最多三位小数的数字(20000、123.456、12.2)例如:142650应该显示为142,650.00011200.50应显示为11,200.500123.456应该保持为123.456我想这与将值除以1000然后使用string.format("{0:f3}",value)是一样的,但我希望找到一些没有的东西算术。Stri