寻找基于可执行是否是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位版本创建不同的构建配置。然后打开项目属性并转到生成选项卡,并为每个生成配置在条件编译符号文本框中输入描述性名称。然后你可以在代码中引用编译常量。