2010-10-25 10 views
5

मैं की तरहकैसे सी # में असुरक्षित कोड को संकलित करने के

[DllImport("gdi32.dll")] 
private unsafe static extern bool SetDeviceGammaRamp(Int32 hdc, void* ramp); 

एक API समारोह आयात किया है, जबकि इसकी

Unsafe code may only appear if compiling with /unsafe 

की तरह एक त्रुटि दिखा कैसे /unsafe साथ संकलित करने के लिए संकलन। मैं Microsoft Visual Studio 2008

का उपयोग कर रहा हूं कोई भी बेहतर समाधान के साथ मेरी सहायता कर सकता है।

अग्रिम धन्यवाद।

उत्तर

13

प्रोजेक्ट पर राइट क्लिक करें। गुण। निर्माण। चेक की अनुमति दें असुरक्षित कोड

+0

इसके बायाँ क्लिक ?? सही??? –

+0

संख्या। अपने मेनू को खोलने के लिए प्रोजेक्ट नाम पर राइट क्लिक करें, ताकि आप गुणों पर जा सकें। –

+0

ओह। मैंने टूलबार में मेनू सोचा। किसी भी तरह से हम उपयोग कर सकते हैं। सही? समाधान एक्सप्लोरर में –

3

घोषणा से कीवर्ड असुरक्षित कीवर्ड हटाएं। इस तरह के विंडोज एपीआई कार्यों असुरक्षित नहीं हैं। आप छुटकारा प्राप्त कर सकते हैं अजीब शून्य * इस तरह (प्रबंधित कोड में 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-बिट ऑपरेटिंग सिस्टम पर काम करने के लिए आवश्यक है।

2

किसी को जरूरत पड़ने पर स्क्रीनशॉट यहां दिया गया है।

UnsafeCodeImage

संबंधित मुद्दे