Tag: 32bit 64bit

检查运行的二进制文件是32位还是64位

可以检查应用程序包的二进制进程是否在32位或64位模式下运行,如本问题所述 ,但我可以validation它只适用于GUI进程。 但是,我还需要检查没有GUI但不属于bundle的进程。 因此,在没有调用系统函数或其他可执行文件的情况下,在给定进程pid的情况下,如何测试是否有任何进程在32位或64位模式下运行?

为什么在64位平台上BSTR长度前缀为4个字节?

似乎在64位平台上,有一个8字节长度的前缀是合理的。 如果我们可以解决超过4Gb的内存,为什么不允许,比如5Gb字符串? 答案只是“按规范”还是存在一些我不知道的互操作性/向后兼容性原因? 谢谢。

如何使用Visual Studio 2010编译64位C DLL?

我在源代码中用C编写了一个DLL。 这是General Polygon Clipper的代码(如果您感兴趣的话)。 我通过主页上提供的C#包装器在C#项目中使用它。 这附带一个预编译的DLL。 自从使用Visual Studio 2010和Windows 7 64位切换到64位开发机器后,该应用程序将不再运行。 这是我得到的错误: 尝试加载格式不正确的程序。 这是因为DLLImport 32bit gpc.dll ,因为我从网上找到的东西收集。 我假设如果我将DLL重新编译为64位,这一切都会消失,但不能因为我的爱而弄清楚如何这样做。 我的C技能是基本的,因为我可以用GNU工具编写C程序,但没有使用各种编译器/处理器/ IDE等经验。 我相信我可以把它移植到C#。 我的意思是我相信自己真的能把它拉下来。 但我不愿意,因为我需要编译器为我做很多工作;)

c:在64位应用程序中使用32位指针?

我想知道我是否可以在64位应用程序中使用32位指针? 我们学校的项目只允许我们将c程序编译成64位应用程序,并测试我们的程序的速度和内存使用情况。 但是,如果我能够使用32位指针,那么我的程序将比64位消耗更少的内存,也许它运行得更快(更快到malloc?) 谢谢您的帮助

64位上的int vs size_t

将代码从32位移植到64位。 有很多地方 int len = strlen(pstr); 这些都会产生警告,因为strlen()返回的是size_t,它是64位,而int仍然是32位。 所以我一直在用它们取而代之 size_t len = strlen(pstr); 但我刚刚意识到这不安全,因为size_t是无符号的,可以将其视为代码签名(我实际遇到了一个导致问题的情况,谢谢,unit testing!)。 盲目地将strlen返回到(int)感觉很脏。 或者也许它不应该? 所以问题是:这有一个优雅的解决方案吗? 我可能在代码库中有一千行代码; 我不能手动检查它们中的每一个,测试覆盖率目前介于0.01和0.001%之间。

双乘法在32位平台的编译时和运行时之间有所不同

我正在32位和64位平台上编译并运行以下程序: int main() { double y = 8.34214e08; double z = 1.25823e45; return y * z == 8.34214e08 * 1.25823e45; } 虽然在64位中结果是预期的(值是相同的,退出代码是非零的)在32位似乎在编译时计算的值,比较的右侧和左侧之间存在一点差异在运行时计算的一面。 这是编译器中的错误还是有逻辑解释? 编辑:这与为什么比较双重和浮动导致意外结果不同? 因为这里所有的价值都是双倍的。

什么时候应该使用gcc的-m32选项?

我正在编写一个程序,如果我在Suse 10 32位系统上编译而不添加-m32选项并在Suse 10 64位上执行它,它可以正常工作。 在这种情况下,我不需要添加-m32选项吗? 我们是否可以直接在64位系统上执行基于32位系统的程序而没有任何副作用? 或者是否需要更新或更改?

用C编程语言将结构从32位移动到64位

我的问题是,我想将结构forms从32位空间移动到64位空间。 假设我在具有相同字段的64位空间中声明相同的结构,有没有办法将相应的字段从32位复制到64位结构? 让我来介绍实际问题,这与缓存内容有关,我们在ram上有一个32位空间的有限大小,所以如果我们在ram上有1G空间而我的单个缓存对象的结构大小是1M那么这个数字我可以存储的对象限制为1G / 1M。 因此,为了解决这个问题,我想在64位spcace中声明我的结构(这样就没有spcace crunch)并且实际上可以将对象的数量包含在内 假设我们在32位空间中有一个结构 typedef struct x{ int a ; int *b ; } x_t; 现在我想在64位空间中移动这个结构,删除32位空间结构。 typedef struct x_64{ int a ; int *b ; } x_64_t; 所以,如果之前我的变量被访问为x-> b或xa,我怎样才能确保将相同的值传输到64位结构,而不改变整个代码的function。 一种方法可以是在64位空间中有一个缓冲区,对于32位空间中的每个变量访问,去64位写入/读入缓冲区。 但这是一个繁琐的过程,可以有一些替代方案吗?

可以混合使用32位和64位代码吗?

可能重复: 将32位库链接到64位程序 程序使用的一个库需要静态链接,是一个32位的库。 如果使用64位编译器进行编译,则会中断,主要是因为变量类型的长度不同(长度大多为两倍)。 提供了库的源代码。 程序本身工作在32位和64位。 是否可以将库编译为32位并将其静态链接到64位应用程序?

C / C ++:sizeof(short),sizeof(int),sizeof(long),sizeof(long long)等…在32位机器上而不是在64位机器上

我正在运行Windows 7(64位)。 这个问题看的是这里发现的同一个问题: 长在64位机器上 但更深入,因为它处理更多的数据类型并适用于C或C ++,而不是C#。 首先,我使用的是Microsoft Visual Studio Ultimate 2012.不幸的是,虽然这个IDE支持C#和Visual C ++,但它似乎不再支持普通的旧版Visual C. 无论如何,我已经尝试在IDE中创建以下标准C ++程序: #include int main(int argc, char **argv) { printf(“sizeof(short): %d\n”, (int) sizeof(short)); printf(“sizeof(int): %d\n”, (int) sizeof(int)); printf(“sizeof(long): %d\n”, (int) sizeof(long)); printf(“sizeof(long long): %d\n”, (int) sizeof(long long)); printf(“sizeof(size_t): %d\n”, (int) sizeof(size_t)); printf(“sizeof(void *): %d\n”, (int) sizeof(void *)); printf(“Hit enter to exit.\n”); […]