我正在创建的OBJ-C库绑定,这样我可以与其他球队一起在同一个项目。为了确保这样做,我试图创建一个简单的obj-c库,定义绑定,并在MonoTouch中使用该对象。我没有构建问题甚至运行时异常,但是调用任何函数的返回值始终为空。的MonoTouch /对象 - 绑定操作方法
我开始使用Xcode中创建一个新的静态库,并定义了“计算器”类。 .h和.m
@interface Calculator : NSObject
- (NSString*)getMessage;
@end
@implementation Calculator
- (NSString*)getMessage
{
return @"hey, look at me!";
}
@end
将此内置到文件'libXcodeLib.a'中。我定义这个类以下MonoTouch的绑定和方法:对gcc_flags
[BaseType(typeof(NSObject))]
interface Calculator
{
[MonoTouch.Foundation.Export("getMessage")]
string GetMessage();
}
除了一个额外的AssemblyInfo.cs下列要求:
[assembly: LinkWith ("libXcodeLib.a", LinkTarget.Simulator | LinkTarget.ArmV6 | LinkTarget.ArmV7, ForceLoad = true)]
最后,下面就来看看在Makefile中产生.dll文件
BTOUCH=/Developer/MonoTouch/usr/bin/btouch
all: XcodeLib.dll
XcodeLib.dll: Makefile ApiDefinition.cs AssemblyInfo.cs libXcodeLib.a
$(BTOUCH) -e ApiDefinition.cs AssemblyInfo.cs --out=XcodeLib.dll --link-with=libXcodeLib.a,libXcodeLib.a
这里是示例代码调用此方法:
var calc = new MTBindings.Calculator();
var msg = calc.GetMessage();
在这一点上,为什么味精NULL?
从所有的阅读中,我已经做了,我看不到我错过了什么,使这项工作。任何新的或经过验证的样本/教程都将不胜感激,我不确定如何简化这一点 - 但它仍然行不通!
得益于SO社区 - 我希望:)
你可以运送你的完整样本给我看看吗? – 2012-01-03 12:39:15
你可以测试是否通过在getMessage中添加NSLog来实现ObjectiveC方法“getMessage”,这可能会指向与你的库链接问题 – JeanLuc 2012-01-03 13:40:03