[英]Xamarin.iOS is not seeing reference to iOS binding library
我在 XCode 中创建了新的 Cocoa Touch 静态库。 我在:StaticLibrary.m 中编写了代码:
#import "StaticLibrary.h"
@implementation StaticLibrary
- (int)addX:(int)x toY:(int)y
{
int sum = x + y;
return sum;
}
@end
我在 Release-iphoneos 和 Release-iphonesimulator 中构建了项目,然后使用终端:
lipo -create Release-iphoneos/StaticLibrary.a Release-iphonesimulator/StaticLibrary.a -output StaticLibraryFat.a
现在我有了胖库“StaticLibraryFat.a”。 然后我创建新的 iOS 绑定库 (Xamarin),单击 PPM -> 添加现有项目 -> StaticLibraryFat.a。 因此添加了该文件并创建了新的 libStaticLibraryFinal.linkwith.cs。 里面的代码:
using System;
using ObjCRuntime;
[assembly: LinkWith ("libStaticLibraryFinal.a", LinkTarget.Simulator, ForceLoad = true)]
我去 Mac,打开终端并使用 Objective Sharpie:
sharpie bind --output=StaticLibrary --namespace=StaticLibrary ~/Desktop/StaticLibrary/StaticLibrary/*.h --sdk=iphoneos12.1 -scope ~/Desktop/StaticLibrary
现在我将 ApiDefinitions.cs 的内容复制到 iOS 绑定库 (Xamarin) - 到项目中的 ApiDefinitions.cs。
ApiDefinition.cs
namespace NativeLibrary
{
[BaseType(typeof(NSObject))]
interface StaticLibrary
{
[Export("addX:toY:")]
int AddX(int x, int y);
}
}
我构建了 iOS 绑定库 (Xamarin)。 在文件夹 bin -> Debug 中有 NativeLibrary.dll。
我创建了新的 iOS 应用程序 (Xamarin)。 PPM -> 添加引用 -> 项目 -> 解决方案 -> iOS 绑定库 (Xamarin)。 在 ViewController.cs 我写:
using NativeLibrary
和
NativeLibrary.AddX(1, 2);
但有一个错误
“不需要使用指令。找不到类型或命名空间名称“本机库”(您是否缺少 using 指令或程序集引用?)
我究竟做错了什么? 当我添加对 iOS 类库的引用时,该引用工作正常。 为什么引用 iOS 绑定库不起作用?
好的,我已经解决了。 不同的命名空间存在问题,因此 Visual Studio 无法连接所有内容。 ApiDefinition.cs 和 Structs.cs 的命名空间必须与 iOSBindingLibrary 的名称相同。 生成的 .dll 文件名为“NativeLibrary.dll”,我将其更改为 namespace.dll,然后在 iOS 应用程序中添加对此 dll 的引用。 然后使用指令(使用“命名空间”)。 在课堂上,我写下 XCode 库的名称并创建新对象。 一切正常。
这很疯狂,但在我的情况下,只需在不同的解决方案中创建 ios 绑定项目,并直接在 ios 项目中添加绑定项目 DLL。 它会正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.