问题标签 [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.

0 投票
1 回答
7193 浏览

c++-cli - 编译为 x64 的 C++/CLI 项目中定义的 _WIN64 在哪里?

它似乎是在我创建的每个项目中自动添加并为 x64 编译的,但在选择 x64 配置时,它甚至没有出现在项目的 Configuration Properties/(C/C++)/Preprocessor 中。

0 投票
3 回答
1181 浏览

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。

0 投票
3 回答
1610 浏览

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 版本。

0 投票
5 回答
6512 浏览

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 可以解决问题。

有任何想法吗?

0 投票
1 回答
939 浏览

javascript - 在 Windows 桌面小工具中可靠地检测操作系统架构

我有一些 Javascript 代码,它们将通过将所有必要的键和值写入注册表来以编程方式注册 COM 互操作程序集。此 COM 对象的旧版本是用 VB6 编写的,除非用户手动运行 x86 sidebar.exe,否则无法在 x64 版本的 Windows 上正常工作,因此我们的一些用户会转而使用 x86 sidebar.exe COM 对象工作。

简而言之,我需要正确检测当前运行的操作系统的架构。如果 x86 版本的 sidebar.exe 正在运行,我已经尝试了以下所有返回错误值的方法:

有什么东西可以用来可靠地检测 Win64 是否正在运行,即使它正在运行 x86 sidebar.exe?

0 投票
7 回答
7360 浏览

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 上不显示。


0 投票
2 回答
1508 浏览

visual-studio - Visual Studio 2005 中的 x64 va_list

我有一个类非静态成员函数,它有可变参数,我在 64 位 Windows 上使用 64 位运行时在 Visual Studio 2005 上编译。

我期待一个浮点数,我将一个浮点数传递给函数。但是当我调试时 - 我没有得到我通过的浮点数。事实上 - 它被函数作为 64 位双精度接收!我必须这样做:

现在我知道 Win64 喜欢在寄存器中传递参数,并在这样做时转换浮点数,va_list 不应该总是在堆栈上吗?

根据大多数参考资料,我应该只有一个干净的堆栈,里面装满了传递的参数。

我的问题是:这是正确的行为,还是错误?如果它是一个错误,是我的错误,还是微软的?

我有定义 WIN64 和 _M_AMD64,而 WIN32 是未定义的。

0 投票
2 回答
2489 浏览

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 文件系统重定向

0 投票
1 回答
295 浏览

c# - x64 的 form_load 中忽略的异常

当我在 C# 应用程序中从 form_load 抛出异常时,当平台为 x64 时它不起作用。(它按 x86 的预期工作)

当我单步执行代码时,我到达了它抛出异常的那一行,然后它立即跳转到 timer_Tick。

当我创建一个新项目并将这一行添加到 form_load 时: throw new System.Exception("oops!");

对于 x86,它按预期崩溃。对于 x64,它不会崩溃。

有什么方法可以让应用程序真正从 64 位的 form_load 中抛出?

0 投票
5 回答
1839 浏览

perl - 我的 Perl 脚本如何知道它在 Win64 下运行?

如何让我的 Perl 脚本检测到它是否在 64 位 Windows 机器上运行,即使它是 32 位 perl?