- Home /
Native Mac Plugin: EntryPointNotFoundException
I'm trying to get my feet wet with native plugin programming and my goal is to write a OSX / Mac plugin that can be used for Push notifications on the Mac. So far I've followed the basic steps to create a cocoa bundle and created an objective C class named "Plugin" (Plugin.h/.m).
For a simple test I would like to call from Unity a NSLog output in the plugin via the SoundTest method. The .m file looks like this:
#include #import "Plugin.h"
@implementation Plugin
(void)DebugLog:(NSString *)msg { NSLog(@"###################################"); }
(void)SoundTest { // <-------------- WANT TO CALL THIS ONE FROM C# CODE NSLog(@"======================================"); } ... ...
I created a corresponding C# file to import the plugin:
using UnityEngine; using System.Collections; using System; using System.Runtime.InteropServices;
public class PushNotificationPlugin {
//Calls to the native plugin
[DllImport ("PushNotification")]
public static extern void SoundTest();
Now I got in Xcode a pre-defined PCH file and I read that I have to define in there via some extern "C" the method call. But how?
This is the generated PushNotification-Prefix.pch file:
#ifdef __OBJC__ #import <Cocoa/Cocoa.h>
extern "C" { static extern void SoundTest(); // <----- doesn't work }
endif
/pre>
Answer by jonas-echterhoff · Mar 14, 2013 at 08:48 AM
Hey Martin,
you cannot call Obj-C code directly from C#. The line:
static extern void SoundTest();
declares a C prototype for a function SoundTest(), but your code does not actually define such a function, so it cannot be found. The Obj-C method you have is not a C function and won't match that prototype. In your case, I don't see a reason to write SoundTest as an Obj-C method at all, just make it a normal C function:
void SoundTest() { // <-------------- WANT TO CALL THIS ONE FROM C# CODE
NSLog(@"======================================");
}
Lastly, make sure you are compiling with the correct architecture (Unity 4.1 will only load 32-bit plugins, but latest versions of Xcode default to building 64 bit binaries).
Answer by Graham-Dunnett · Mar 13, 2013 at 09:37 PM
Thanks Graham. I followed that tutorial, but it is written for C++ and I need to code that in Objective-C. The code in the manual page doesn't work for Obj-c.
Btw, the $$anonymous$$idi Plugin link is broken on that page.