尋找基於可執行是否是64位或32位的進口DLL:預處理指令導入基於對C#中的預處理指令平臺
#if WIN64
[DllImport("ZLIB64.dll", CallingConvention=CallingConvention.Cdecl)]
#else
[DllImport("ZLIB32.dll", CallingConvention=CallingConvention.Cdecl)]
尋找基於可執行是否是64位或32位的進口DLL:預處理指令導入基於對C#中的預處理指令平臺
#if WIN64
[DllImport("ZLIB64.dll", CallingConvention=CallingConvention.Cdecl)]
#else
[DllImport("ZLIB32.dll", CallingConvention=CallingConvention.Cdecl)]
以下是您需要做的事情。
首先,進入Project-><project name> Properties...
並轉到生成選項卡。
在那裏,在標有「條件編譯符號」的文本框中,爲您的x86平臺(對話框頂部可選)添加WIN32
,爲您的x64平臺添加WIN64
。然後保存。
請注意,如果您有一個用於「AnyCPU」,您可能希望完全刪除該平臺,因爲它不會安全。
然後,進入源,並寫:
#if WIN64
[DllImport("ZLIB64.dll", CallingConvention=CallingConvention.Cdecl)]
#else
[DllImport("ZLIB32.dll", CallingConvention=CallingConvention.Cdecl)]
#endif
注意,當您查看源代碼,其中一條線看起來像它已被註釋掉,在整條生產線是在一個灰色的字體。這條線是「其他平臺」的一條線。如果您在工具欄中選擇平臺,您會注意到語法着色如下所示。
當然,在重新閱讀我的答案後,我注意到你實際上並不需要將WIN32放入條件符號列表中,因爲它沒有被使用,但它可能對其他地方有用#if WIN32而不是64.
你必須添加一個條件編譯符號對於項目屬性中的每個目標平臺,請在Build選項卡中。只需爲Build平臺頂部的平臺下拉列表中確定的平臺添加一個符號即可。更改平臺將允許您添加僅適用於該平臺的構建的不同符號。
我知道沒有內建的東西。但是,定義自定義編譯常量很簡單。如果您正在使用Visual Studio,請使用Configuration Manager爲32位和64位版本創建不同的構建配置。然後打開項目屬性並轉到生成選項卡,併爲每個生成配置在條件編譯符號文本框中輸入描述性名稱。然後你可以在代碼中引用編譯常量。