如何编译C#不安全代码
问题描述:
在编译时其显示像如何编译C#不安全代码
Unsafe code may only appear if compiling with /unsafe
错误如何与/unsafe
编译我已经导入的API函数一样
[DllImport("gdi32.dll")]
private unsafe static extern bool SetDeviceGammaRamp(Int32 hdc, void* ramp);
。我正在使用Microsoft Visual Studio 2008
任何人都可以帮助我提供更好的解决方案。
在此先感谢。
答
右键点击项目。属性。建立。检查允许不安全的代码
答
只需从声明中删除不安全的关键字。这样的Windows API函数不是不安全的。你可以摆脱如果尴尬无效*(IntPtr的托管代码)是这样的:
private struct RAMP {
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
public UInt16[] Red;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
public UInt16[] Green;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
public UInt16[] Blue;
}
[DllImport("gdi32.dll")]
private static extern bool SetDeviceGammaRamp(IntPtr hDC, ref RAMP lpRamp);
还要注意,第一个参数是一个把手,一个IntPtr,不是一个Int32。使此代码在64位操作系统上工作所必需的。
答
这里是截图,如果有人需要。
其左键点击??对??? – 2010-10-25 10:58:25
没有。右键点击项目名称打开它的菜单,所以你可以去属性。 – 2010-10-25 10:59:49
哦。我想到了工具栏中的菜单。无论哪种方式,我们可以使用。对?解决方案资源管理器中的 – 2010-10-25 11:41:41