Ich habe die Dokumentation von Xamarin gelesen.Wie bindet man eine statische Objective-C-Bibliothek an Xamarin.iOS?
Und das ist mein Test-Klasse in Objective-C:
#import "XamarinBundleLib.h"
@implementation XamarinBundleLib
+(NSString *)testBinding{
return @"Hello Binding";
}
@end
Es ist sehr einfach, nur eine Methode.
Und das ist meine C# Klasse:
namespace ResloveName
{
[BaseType (typeof (NSObject))]
public partial interface IXamarinBundleLib {
[Static,Export ("testBinding")]
NSString TestBinding {get;}
}
}
Dann ist das hier mein AppDelegate Code:
public override bool FinishedLaunching (UIApplication application, NSDictionary launchOptions)
{
// Override point for customization after application launch.
// If not required for your application you can safely delete this method
string testStr = ResloveName.IXamarinBundleLib.TestBinding.ToString();
System.Console.WriteLine ("testStr="+testStr);
return true;
}
Wenn ich die Anwendung ausführen, ich diese Ausnahme erhalten:
Die TestBinding-Attribute ist null. Ich muss irgendwo falsch liegen, also wie kann ich es beheben?
Haben Sie Objective Sharpie ausprobiert? https://developer.xamarin.com/guides/cross-platform/macios/binding/objective-sharpie/ – iamIcarus
Versuchen Sie die Bindung mit 'string' und nicht mit' NSString'. Wenn das nicht funktioniert, ist es wahrscheinlich, dass die native Bibliothek aus irgendeinem Grund nicht in die ausführbare Datei eingebunden wurde (ein Build-Protokoll würde dies anzeigen). –
Ich habe versucht, Zeichenfolge anstelle von NSString zu verwenden, aber das stimmt auch nicht. Jetzt denke ich, dass vielleicht etwas mit meiner eigenen Bibliothek nicht stimmt, ich werde es überprüfen. Danke für deinen Vorschlag. –