2013-03-29 8 views
9

के साथ त्रुटि मैं GPUImage प्रोजेक्ट के लिए बाइंडिंग बनाने की कोशिश कर रहा हूं, लेकिन बाध्य वर्गों में से कोई भी काम नहीं कर रहा है। उदाहरण के लिए, GPUImageView:"मूल वर्ग लोड नहीं हो रहा है" मेरी बाइंडिंग

ObjC में यह इस तरह की घोषणा की है (header in git):

@interface GPUImageView : UIView <GPUImageInput> 
//then some fields, properties and methods I'm not interested in 

तो, मेरी ApiDefinition.cs इस तरह दिखता है:

namespace GPUImage 
{ 
    [BaseType (typeof(NSObject))] 
    [Model] 
    interface GPUImageInput { 
    } 

    [BaseType (typeof(UIView))] 
    interface GPUImageView : GPUImageInput { 
     [Export ("initWithFrame:")] 
     IntPtr Constructor(RectangleF frame); 
    } 
} 

LinkWithAttributes:

[assembly: LinkWith ("libGPUImage.a", LinkTarget.Simulator | LinkTarget.ArmV7 | LinkTarget.ArmV7s, ForceLoad = true, Frameworks = "CoreMedia CoreVideo OpenGLES QuartzCore AVFoundation UIKit Foundation")] 

यह ठीक बनाता है और डीएल बनाता है। लेकिन इस तरह अपने प्रोजेक्ट में इसका इस्तेमाल करने की है जब मैं कोशिश:

var iv = new GPUImageView (new RectangleF (0, 0, 100, 100)); 

अपवाद throwed:

प्रकार का एक देशी उदाहरण नहीं बना सका 'GPUImage.GPUImageView': देशी वर्ग नहीं है लोड किया गया है। कक्षा को सेट करके इस स्थिति को अनदेखा करना संभव है। झूठ बोलने के लिए विफल करें।

Stacktrace

MonoTouch.ObjCRuntime.Class.ThrowOnInitFailure == falseiv के बाद बनाया गया था, लेकिन व्यर्थ (जैसे AddSubview(iv) शो कुछ भी नहीं)।

मुझे लगता है कि GPUImage.a फ़ाइल में कुछ गड़बड़ है, लेकिन मुझे नहीं पता कि इसे किसी भी तरह से कैसे परीक्षण किया जाए।

Here is 7z इसमें 2 परियोजनाओं के साथ: कोशिश करने की बाइंडिंग - बाइंडिंग स्वयं; GPUImage कोशिश कर रहा है - उपयोग में बाइंडिंग;

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

पीएस

1) LinkWith विशेषता के साथ फ़ाइल (libGPUImage.linkwith.cs) संकलित नहीं है: Here is the link to this post on xamarin forums.

+0

आप उद्देश्य-सी पुस्तकालय के लिए हेडर फाइल साझा कर सकते हैं? मैं उन्हें आपकी 7z फ़ाइल में नहीं देखता हूं। – jonathanpeppers

+0

@ जोनाथनपेपर्स, https: // github।कॉम/ब्रैडलार्सन/जीपीयू इमेज/ब्लॉब/मास्टर/फ्रेमवर्क/सोर्स/जीपीयूआईमेज व्यूएच – folex

+0

क्या खाली कन्स्ट्रक्टर आपके लिए काम करता है? मुझे यहां कोई 'init' विधियां नहीं दिखाई दे रही हैं। – jonathanpeppers

उत्तर

5

रॉल्फ Bjarne Kvinge के लिए धन्यवाद

दो समस्याएं हैं। TryingBindings प्रोजेक्ट पर राइट-क्लिक करें, जोड़ें, फ़ाइलें जोड़ें और इसे चुनें।

2) मूल पुस्तकालय में i386 (सिम्युलेटर) के लिए कोड नहीं है, केवल बांह (डिवाइस)। यदि आप मूल पुस्तकालय स्वयं बना रहे हैं तो आप या तो एक सार्वभौमिक लाइब्रेरी बना सकते हैं जिसमें सभी आर्किटेक्चर के लिए कोड शामिल है, या आप कई देशी पुस्तकालयों का उपयोग कर सकते हैं, प्रत्येक आर्किटेक्चर के एक अलग सेट का समर्थन करते हैं, और केवल एक लिंकविथ विशेषता है प्रत्येक मूल पुस्तकालय।

Bug 11497

+0

मुझे एक ही समस्या का सामना करना पड़ रहा है। नमूना परियोजनाओं को यहां जोड़ा गया https://bugzilla.xamarin.com/show_bug.cgi?id=11497 क्या आप कृपया एक नज़र डालें और मुझे सही दिशा में इंगित करें? धन्यवाद – Supreet

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