簡體   English   中英

C#中用於基於平台導入的預處理器指令

[英]Preprocessor directive in C# for importing based on platform

根據可執行文件是 64 位還是 32 位,在 c# 中尋找用於導入 dll 的預處理器指令:

#if WIN64
[DllImport("ZLIB64.dll", CallingConvention=CallingConvention.Cdecl)]
#else
[DllImport("ZLIB32.dll", CallingConvention=CallingConvention.Cdecl)]

這是您需要做的。

首先,進入Project-><project name> Properties...並進入 Build 選項卡。

在那里,在標記為“條件編譯符號”的文本框中,為您的 x86 平台添加WIN32 (可在對話框頂部選擇)和為您的 x64 平台添加WIN64 然后保存。

請注意,如果您有一個用於“AnyCPU”的平台,您可能希望完全刪除該平台,因為它不安全。

然后,進入源代碼,並寫下:

#if WIN64
    [DllImport("ZLIB64.dll", CallingConvention=CallingConvention.Cdecl)]
#else
    [DllImport("ZLIB32.dll", CallingConvention=CallingConvention.Cdecl)]
#endif

請注意,當您查看源代碼時,其中一行看起來像是已被注釋掉,因為整行都是灰色字體。 這條線路是“其他平台”的線路。 如果您在工具欄中選擇平台,您會注意到語法顏色也是如此。

當然,在重新閱讀我的答案后,我注意到您實際上並不需要將 WIN32 放入條件符號列表中,因為它沒有被使用,但是在其他地方在 WIN32 而不是 64 上執行 #if 可能會很有用.

您必須在項目屬性的 Build 選項卡中為每個目標平台添加條件編譯符號。 只需為給定平台添加一個符號,由構建表單頂部的平台下拉菜單確定。 更改平台將允許您添加僅適用於該平台構建的不同符號。

卸載並編輯 .csproj 文件,添加:

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
    <DefineConstants>WIN64;$(DefineConstants)</DefineConstants>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
    <DefineConstants>WIN64;$(DefineConstants)</DefineConstants>
  </PropertyGroup>

采用:

#if WIN64
...
#endif

問候

我不知道內置任何東西。 但是,定義自定義編譯常量很簡單。 如果您使用 Visual Studio,請使用配置管理器為 32 位和 64 位版本創建不同的構建配置。 然后打開項目屬性並轉到 Build 選項卡並在每個構建配置的條件編譯符號文本框中輸入一個描述性名稱。 然后就可以在代碼中引用編譯常量了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM