C 平台問題

2022-02-15 03:22:40 字數 977 閱讀 4337

一、在visualstudio中,在編譯設定中有如下選項:

x86: 將程式集編譯為由相容 x86 的 32 位公共語言執行庫執行。

x64: 將程式集編譯為由支援 amd64 或 em64t 指令集的計算機上的 64 位公共語言執行庫執行。

anycpu:(預設值)將程式集編譯為在任意平台上執行。

itanium: 將程式集編譯為由採用 itanium 處理器的計算機上的 64 位公共語言執行庫執行。

二、具體行為如下:

1)在 64 位 windows 作業系統上:

用 x86 編譯的程式集將在 wow64 下執行的 32 位 clr 上執行。

用 x64 編譯的程式集將在 64 位 clr 上執行。

用 anycpu 編譯的可執行檔案將在 64 位 clr 上執行。

用 anycpu 編譯的 dll 將在與載入它的程序相同的 clr 上執行。

2)在 32 位 windows 作業系統上:

用 x86或anycpu 編譯的程式集將在 32 位 clr 上執行。

用 x64 編譯的程式集無法執行。

說明:現在大多數使用者使用的都是在winxp以上的系統中執行程式(不管是32位的還是64位的),因此,基本不可能選擇x64的編譯程式集。 是不是都選擇any cpu這種預設方式就不會存在問題了呢?

首先看看any cpu和x86的可執行檔案(exe)在32位和64位下有什麼區別:any cpu在32位下,exe將以32位執行,而在64位下,exe將以64位執行。而x86的話,始終以32位執行。

如果使用者希望使用x86,也就是不希望64位下用64位方式執行exe程式。系統中可能存在第三方的32位dll,一旦使用64位執行的exe,在呼叫到32位的dll時,將無法呼叫。

如果使用者希望使用any cpu,是因為dll的實際執行方式是受呼叫它的exe所影響的,因此設為any cpu就可以了(即選擇預設)。而如果設定為x86,雖然看似沒什麼問題,但其無法在64位clr中執行了,存在缺陷。

最長平台問題 C實現

此問題來自 c語言名題精選百則 問題1.1最長平台 plateau.c 已知乙個從小到大排序的陣列,這個陣列中的乙個平台 plateau 是連續的一串值相同的元素,並且這一串元素不能再延伸,例如,在1,2,2,3,3,3,4 5 5 6中1,2.2,3.3.3,4,5.5,6都是平台,編寫乙個程式接...

詳談c 跨平台編碼的問題

最近要將乙個windows下的專案放到樹莓派上,以便充分利用頻寬資源,使其以夜繼程式設計客棧日的程式設計客棧工作 在此記錄一下編碼問題和方案 在windo程式設計客棧ws下,現在用的vs2coxesaqypg015,建立的 檔案預設編碼是ansi,windows特有的概念,本地編碼,結合實際情況就是...

最長平台問題

該問題出自 c語言名題精選百則技巧篇 大意是 找出一段有序數字中,找出最長而且連續的數字。比如在1,2,2,3,3,3,4,5,5,6中最長平台即為3,長度也是3。我的 如下 include include int main in order result x 0 int size sizeof x...