Я прочитал документацию от Xamarin.Как связать статическую библиотеку Objective-C с Xamarin.iOS?
И это мой тестовый класс в Objective-C:
#import "XamarinBundleLib.h"
@implementation XamarinBundleLib
+(NSString *)testBinding{
return @"Hello Binding";
}
@end
Это очень легко, просто один метод.
И это мой C# класс:
namespace ResloveName
{
[BaseType (typeof (NSObject))]
public partial interface IXamarinBundleLib {
[Static,Export ("testBinding")]
NSString TestBinding {get;}
}
}
Тогда это мой AppDelegate код:
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;
}
При запуске приложения, я получаю это исключение:
Атрибуты TestBinding имеют значение NULL. Я, должно быть, где-то ошибся, так как я могу это исправить?
Вы попробовали Objective Sharpie? https://developer.xamarin.com/guides/cross-platform/macios/binding/objective-sharpie/ – iamIcarus
Попробуйте привязку, используя 'string', а не' NSString'. Если это не сработает, скорее всего, родная библиотека по какой-либо причине не была связана с исполняемым файлом (журнал сборки покажет это). –
Я пытаюсь использовать строку вместо NSString, но это неправильно. Теперь я думаю, может быть, что-то не так с моей родной библиотекой тоже, я проверю. Спасибо за предложение. –