[Mono-osx] ObjC library run from Mono always returns null

AlexGray alex.j.gray23 at gmail.com
Thu Aug 22 04:45:33 UTC 2013


I've got a simple objc library which has 1 static function, return a string,
which will only return null when run from mono. 

This is the source code of the library:
#import <Foundation/Foundation.h>

@interface DeviceGetter : NSObject
{
}
+ (NSString*)test;

@end
@implementation DeviceGetter
+ (NSString *)test
{
    return @"test";
}
@end
Which compiles to DeviceGetter.dylib.

I run bmac.exe on the following API definition file 

using System;
using MonoMac.Foundation;

[assembly: MonoMac.RequiredFramework("DeviceGetter.dylib")]
namespace Imaginality.Toolkit.NuonTK
{
	[BaseType (typeof (NSObject))]
	public interface DeviceGetter
	{ 
		[Static, Export ("test")]
		string test(); 
	}
}

And then in my final project I reference the compiled definition file and
include the DeviceGetter.dylib in the output directory.

And then as according to Duane in this thread
http://mono.1490590.n4.nabble.com/Binding-Objective-C-Types-td4656457.html I
make changes to AppDelegate as such: 

		public AppDelegate ()
		{
			Type t = typeof(DeviceGetter);
			MonoMac.ObjCRuntime.Runtime.RegisterAssembly (t.Assembly);
			string a = DeviceGetter.test ();
			System.Diagnostics.Debug.Write (a);
		}

But it never prints "test" as I would expect it to, instead the variable "a"
remains null.

If anyone can point out what i might be doing wrong that would be greatly
appreciated. 



--
View this message in context: http://mono.1490590.n4.nabble.com/ObjC-library-run-from-Mono-always-returns-null-tp4660618.html
Sent from the Mono - OSX mailing list archive at Nabble.com.


More information about the Mono-osx mailing list