2016-11-23 115 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.

相關問題