このプロジェクトのバインディングプロジェクトを作成しようとしました: https ://github.com/tolo/HHServices
プロジェクトは、下位レベルの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
これに対する私のバインディングは次のようになります。
[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();
}
cライブラリdns_sd.hを参照する方法がわからないため、DNSServiceRef、DNSServiceErrorTypeなどのクラスへの参照がないため、ライブラリはビルドされません(これらは不明であると言っています)。
これに関してオンラインですべてのドキュメントを調べましたが、ネイティブcライブラリを参照する方法について言及しているものは見つかりませんでした。
これに関して私が見つけることができる最も近い同様の質問は次のとおりです。dns_sd.hのDNSSDObjectsとMonoTouchのDNSServiceResolveを参照していますが、これは未回答です。
どんな援助でも大歓迎です。
ps:私の最終的な目標は、ピアツーピアのBonjourを有効にして、GameKitを使用する代わりに、デバイス間でTCPソケット接続を確立できるようにすることです。