Binding 在Monotouch中绑定使用c库(dns_sd.h)的项目

Binding 在Monotouch中绑定使用c库(dns_sd.h)的项目,binding,xamarin.ios,Binding,Xamarin.ios,我已尝试为此项目编写绑定项目: 该项目使用较低级别的C类:dns_sd.h。我不知道如何将其导入到我的绑定项目中 除此之外,我需要绑定的所有类都很好: #import <Foundation/Foundation.h> #include <dns_sd.h> // Note this! @interface HHServiceSupport : NSObject { @private CFRunLoopRef run

我已尝试为此项目编写绑定项目:

该项目使用较低级别的C类:dns_sd.h。我不知道如何将其导入到我的绑定项目中

除此之外,我需要绑定的所有类都很好:

#import <Foundation/Foundation.h>
#include <dns_sd.h>                       // Note this!

@interface HHServiceSupport : NSObject {
@private
    CFRunLoopRef runLoop;
@protected
    DNSServiceRef sdRef;
}

@property (nonatomic, readonly) DNSServiceRef sdRef;

@property (nonatomic, assign) DNSServiceErrorType lastError;
@property (nonatomic, readonly) BOOL hasFailed;

- (void) doDestroy;
- (void) dnsServiceError:(DNSServiceErrorType)error;

- (void) openConnection;
- (void) closeConnection;

@end
因为我不知道如何引用c库dns_sd.h,所以我没有任何类的引用,比如DNSServiceRef、DNSServiceErrorType等等,所以库不会构建(说这些是未知的)

我在网上查阅了所有与此相关的文档,但没有找到任何关于如何引用本机c库的内容

关于这一点,我能找到的最接近的类似问题是:哪个问题没有答案

如蒙协助,将不胜感激


ps:我的最终目标是启用点对点Bonjour,这样我就可以在设备之间建立TCP套接字连接,而不是使用GameKit,因为那只是一场灾难。

看看我对这个问题的回答。不确定它是否对您有帮助,因为它只是简单地呼叫dns_sd。

虽然它不能直接回答我的问题,但iOS6现在允许您在p2p网络(蓝牙)上发布Bonjour,无需包装我自己的DNSSdobject

来自苹果iOS6发行说明:

你好 默认情况下,NSNetService类和CFNetService API不包括P2P接口。要通过P2P接口浏览、注册或解析服务,应用程序需要使用下面提到的Bonjour DNSService*()API。 默认情况下,在以下API中将interfaceIndex参数设置为kDNSServiceInterfaceIndexAny将不包括P2P接口。要包括P2P接口,现在必须在使用kDNSServiceInterfaceIndexAny时设置kDNSServiceFlagsIncludeP2P标志,或者将interfaceIndex设置为kDNSServiceInterfaceIndexP2P

[BaseType (typeof(NSObject))]
interface HHServiceSupport
{

//    @private
//        CFRunLoopRef runLoop;
//    @protected
//        DNSServiceRef sdRef;


//Do I bind the above??!


//@property (nonatomic, readonly) DNSServiceRef sdRef;
[Export("sdRef")]
DNSServiceRef SDRef { get; set; }

//@property (nonatomic, assign) DNSServiceErrorType lastError;
[Export("lastError")]
DNSServiceErrorType LastError { get; set; }

//@property (nonatomic, readonly) BOOL hasFailed;
[Export("hasFailed")]
bool HasFailed { get; set; }

 //- (void) doDestroy;
[Export("doDestroy")]
void  DoDestroy();

//- (void) dnsServiceError:(DNSServiceErrorType)error;
[Export("dnsServiceError:")]
void  DnsServiceError(DNSServiceErrorType error);

//- (void) openConnection;
[Export("openConnection")]
void  OpenConnection();

//- (void) closeConnection;
[Export("closeConnection")]
void  CloseConnection();

}