问题标签 [win64]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++-cli - 编译为 x64 的 C++/CLI 项目中定义的 _WIN64 在哪里?
它似乎是在我创建的每个项目中自动添加并为 x64 编译的,但在选择 x64 配置时,它甚至没有出现在项目的 Configuration Properties/(C/C++)/Preprocessor 中。
grid - 在 Windows 64 机器上运行 Data Synapse Win32 DLL 网格节点?
我们正在用 C# 开发一个 Data Synapse calc 节点进程,该进程需要 Win32 DLL 中的功能。我们构建这个没有问题。
问题是它必须在 Windows 64 位系统上运行,带有适用于 Windows 64 的 Data Synapse 5.1 Grid API。虽然 Windows 64 将使用 WOW 透明地运行大多数进程,但我们不知道 Data Synapse 的 64 位会以某种方式阻止这种情况从工作?
有人做过吗?
2009 年 6 月 8 日:更新。当我们尝试在 win64 网格上运行 win32 服务时,我们遇到了问题,因为在 Win64 上,网格代码内部结构作为 64 位 Java 运行。这个 java 使用 win64 JINI 调用我们的服务来调用我们的服务,该服务被实现为 DLL。不幸的是作为一个 Win32 DLL。
delphi - 在 Windows Vista 64 位下从命令行使用 Delphi 2009 进行编译
有没有人在不安装 Delphi 2009 的情况下,在 64 位 Windows Vista 下使用命令行 dcc32.exe 编译器成功编译 Win32 GUI 应用程序?在我们的系统上它失败了,并显示 DFM 文件包含未知 16 位资源的消息。这通常表示无法读取 DFM 文件。它在我们尝试过的所有 32 位 Vista 和 Windows XP 上都能完美运行。
我在问,因为我们希望确保以后可以在需要时重建当前的 exe 文件,所以即使我们将来都切换到 64 位操作系统,我们希望能够重建旧的 2009 版本。
vb6 - 在 VB6 应用程序中使用 ImageList 会导致 Windows 7.0 64 位崩溃
我有一个旧的 VB6 应用程序,它使用 COMCTL32.OCX 中的 ImageList 控件(“Microsoft Windows Common Controls 5.0 (SP2)”)为 TreeViews 和 ListViews 提供图标。
该应用程序甚至无法在 Windows 7.0 64 位上启动。它尝试加载具有 ImageList 的表单的那一刻,它崩溃了(实际上,应用程序眨眼,退出而无影无踪)。
从表单中删除 ImageList 可以解决问题。
有任何想法吗?
javascript - 在 Windows 桌面小工具中可靠地检测操作系统架构
我有一些 Javascript 代码,它们将通过将所有必要的键和值写入注册表来以编程方式注册 COM 互操作程序集。此 COM 对象的旧版本是用 VB6 编写的,除非用户手动运行 x86 sidebar.exe,否则无法在 x64 版本的 Windows 上正常工作,因此我们的一些用户会转而使用 x86 sidebar.exe COM 对象工作。
简而言之,我需要正确检测当前运行的操作系统的架构。如果 x86 版本的 sidebar.exe 正在运行,我已经尝试了以下所有返回错误值的方法:
有什么东西可以用来可靠地检测 Win64 是否正在运行,即使它正在运行 x86 sidebar.exe?
winapi - 如何在 64 位 Windows 程序集中使用“GS:”(例如,移植 TLS 代码)
用户空间程序如何在 64 位 Windows(当前为 XP-64)下配置“GS:”?
(通过配置,将 GS:0 设置为任意 64 位线性地址)。
我正在尝试将“JIT”环境移植到最初为 Win32 开发的 X86-64。
一个不幸的设计方面是相同的代码需要在多个用户空间线程(例如,“光纤”)上运行。Win32 版本的代码为此使用 GS 选择器,并生成正确的前缀来访问本地数据——“mov eax,GS:[offset]”指向当前任务的正确数据。Win32 版本的代码会将一个值加载到 GS 中,只要它有一个可以工作的值。
目前发现64位windows不支持LDT,所以在Win32下用的方法不行。然而,X86-64 指令集包括“SWAPGS”,以及一种在不使用传统分段的情况下加载 GS 的方法——但这只适用于内核空间。
根据 X64 手册,即使 Win64 允许访问描述符——它不允许——也无法设置段基的高 32 位。设置这些的唯一方法是通过 GS_BASE_MSR(和相应的 FS_BASE_MSR - 其他段基在 64 位模式下被忽略)。WRMSR指令是Ring0,所以不能直接使用。
我希望有一个 Zw* 函数,它允许我在用户空间或 Windows API 的其他一些黑暗角落中更改“GS:”。我相信 Windows 仍然使用 FS: 作为自己的 TLS,所以必须有一些机制可用?
此示例代码说明了该问题。我提前为使用字节码道歉 - VS 不会为 64 位编译进行内联汇编,我试图将其保留为一个文件以用于说明目的。
该程序在 XP-32 上显示“PASS”,而在 XP-x64 上不显示。
visual-studio - Visual Studio 2005 中的 x64 va_list
我有一个类非静态成员函数,它有可变参数,我在 64 位 Windows 上使用 64 位运行时在 Visual Studio 2005 上编译。
我期待一个浮点数,我将一个浮点数传递给函数。但是当我调试时 - 我没有得到我通过的浮点数。事实上 - 它被函数作为 64 位双精度接收!我必须这样做:
现在我知道 Win64 喜欢在寄存器中传递参数,并在这样做时转换浮点数,va_list 不应该总是在堆栈上吗?
根据大多数参考资料,我应该只有一个干净的堆栈,里面装满了传递的参数。
我的问题是:这是正确的行为,还是错误?如果它是一个错误,是我的错误,还是微软的?
我有定义 WIN64 和 _M_AMD64,而 WIN32 是未定义的。
windows - SHGetSpecialFolderPath,如何从 32 位应用程序访问 64 位 CSIDL
在 64 位系统上运行的 32 位应用程序是否可以访问 64 位应用程序的默认文件夹?
例如,在 32 位应用程序中使用带有 CSIDL_PROGRAM_FILES 的 SHGetSpecialFolderPath 会返回“C:\Program Files (x86)” 如果从 64 位应用程序中使用相同的调用,我会得到“C:\Program Files”。有没有办法获得来自 32 位应用程序的“C:\Program Files”?
这里的一个相关问题对SHGetFolderPath() 32 位与 64 位没有帮助,也没有在调用 SHGetSpecialFolderPath 之前抑制 wow64 文件系统重定向
c# - x64 的 form_load 中忽略的异常
当我在 C# 应用程序中从 form_load 抛出异常时,当平台为 x64 时它不起作用。(它按 x86 的预期工作)
当我单步执行代码时,我到达了它抛出异常的那一行,然后它立即跳转到 timer_Tick。
当我创建一个新项目并将这一行添加到 form_load 时: throw new System.Exception("oops!");
对于 x86,它按预期崩溃。对于 x64,它不会崩溃。
有什么方法可以让应用程序真正从 64 位的 form_load 中抛出?
perl - 我的 Perl 脚本如何知道它在 Win64 下运行?
如何让我的 Perl 脚本检测到它是否在 64 位 Windows 机器上运行,即使它是 32 位 perl?