2016-11-23 53 views
1

我有一个在32位运行正常的库;但是客户端需要将它从64位应用程序链接起来。但是,改变指针的大小是一个问题,因为我们必须将它们存储在32位值中。在64位机器上限制芯片32位

是否有可能告诉编译器(包括Visual Studio和GCC)创建一个64位库,但内部只使用32位地址空间?

+2

解释您曾经让64位应用程序在Windows中使用32位模块的魔力。应用程序及其加载的所有外部模块都是64位或全部32位。 – PaulMcKenzie

+2

你是什么意思“必须将它们存储在32位值”。除非您使用uint32或数据类型来存储指针而不是指针类型,否则编译x64体系结构的库应该是个问题。 –

+2

此外,如果您使用['ULONG_PTR'](https://msdn.microsoft.com/en-us/library/windows/desktop/aa384255%28v=vs.85%29),则可以防止此操作(在Windows中) .aspx)而不是已知的'int'类型来存储指针。那么这一切都将是透明的。 – PaulMcKenzie

回答

0

No. sizeof(void*)是一个非常常数。它可以是4或8,但不可以是4 8.

相关问题