OSX - Using Objective-C to write Monkey libs?
Monkey Targets Forums/Desktop/OSX - Using Objective-C to write Monkey libs?| 
 | ||
| How can we write addon-libraries for targets C++ or Desktop_Game using Objective-C on MacOSX? Somebody got an example, please? We can write C++ functions and import it with: Import "native/Window.cpp" The functions in Window.cpp get inserted directly into the final generated c++ code. This works. How is it possible to use this with Objective-C, so we can write a Cocoa GUI lib? .m files just get ignored: Import "native/Window.m" The generated code contains the comment: //#include "native/Window.m" I also tried to make a static lib with Xcode and include the resulting lib: Import "native/libWindow.a" #LIBS+="native/libWindow.a" Those files don't get copied to build folder and seem to be ignored. | 
| 
 | ||
| Answer: We can just use Objective-C code within C++ codes, when using the Desktop_Game target. Window.monkey Strict
Import "Window.cpp"
Extern
    Function CreateWindow:Int(x:Int,y:Int,width:Int,height:Int,title:String)="CreateWindow"
Public
Function Main:Int()
    CreateWindow(100,100,800,600,"My Monkey Window")
    Return 0
EndWindow.cpp #include <cocoa/cocoa.h>
@interface MyWindowDelegate : NSObject<NSWindowDelegate>
@end
@implementation MyWindowDelegate
    - (BOOL)windowShouldClose:(id)window {
    	[window release];
    	NSApplication *app = [NSApplication sharedApplication];
    	[app terminate:app];
        return YES;
    }
    - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender {
        return NSTerminateNow;
    }
@end
int CreateWindow(int x, int y, int width, int height, String title) {
    NSApplication *app = [NSApplication sharedApplication];
    unsigned int styleMask = NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask;
    NSWindow *w1 = [ [NSWindow alloc]
                     initWithContentRect:NSMakeRect( x, y, width, height )
                     styleMask:styleMask
                     backing:NSBackingStoreBuffered
                     defer:NO
                   ];
    MyWindowDelegate *delegate = [[MyWindowDelegate alloc] init];
    [w1 setDelegate:delegate];
    [w1 makeKeyWindow];
    [w1 makeKeyAndOrderFront:app];
    [w1 setTitle:title.ToNSString()];
    [w1 setAcceptsMouseMovedEvents:YES];
    [w1 setPreventsApplicationTerminationWhenModal:NO];
    [w1 setReleasedWhenClosed:YES];
    [w1 center];
    [w1 update];
    [w1 display];
    //[app runModalForWindow:w1];
    [app run];
    //[w1 release];
    return 0;
} | 
| 
 | ||
| Updated to close the window and terminate the app. | 
| 
 | ||
| Hi Danilo, i have no idea about Objective-C , but i have add new features to trans ext. with PrjImport new keyword , we can include many files with our project , it's file has corresponding language compiler, such as c,cpp,asm,s,zir. and each file will compiled and linked to our final exe file, now it works for gcc under windows. |