繁体   English   中英

Xamarin.iOS 没有看到对 iOS 绑定库的引用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM