Using the OSX Cocoa-APIs from Mathematica via Link-Technology

General Tech Technology & Software 2 years ago

0 1 0 0 0 tuteeHUB earn credit +10 pts

5 Star Rating 1 Rating

Posted on 16 Aug 2022, this text provides information on Technology & Software related to General Tech. Please note that while accuracy is prioritized, the data presented might not be entirely correct or up-to-date. This information is offered for general knowledge and informational purposes only, and should not be considered as a substitute for professional advice.

Take Quiz To Earn Credits!

Turn Your Knowledge into Earnings.

tuteehub_quiz

Answers (1)

Post Answer
profilepic.png
manpreet Tuteehub forum best answer Best Answer 2 years ago

 

 

I'd like to access Cocoa-API's (Foundation, AppKit) from Mathematica and have researched the following ways:

  1. CocoaLink: A deprecated Package by Rob Schlofield from 2009, which is still available on GitHub but will not compile out of the box due to the introduced changes in the ObjC-Runtime made at that time and around 2010. I got it to work, but not for all Types. I contacted Rob if he will update CocoaLink but he told me that the effort would not justify the usefulness ... unfortunately.

  2. MonoObjC: A Mono/.NET package which can be installed and used after Mono has been installed. Mono allows one to use .NETLink and invoke almost all .NET functions of the 4.0 Framework.

I have tried:

Needs["NETLink`"];

monobjc = LoadNETAssembly["Monobjc"];
foundation = LoadNETAssembly["Monobjc.Foundation"];
appkit = LoadNETAssembly["Monobjc.AppKit"];

Then I tried to load and instantiate a NSString but it failed with Messages telling me that the Bridge to ObjC is not available.

nsstring = LoadNETType["Monobjc.Foundation.NSString"];
sstr = NETNew[nsstring]

NET::netexcptn: A .NET exception occurred: System.TypeInitializationException: An exception was thrown by the type initializer for Monobjc.Foundation.NSString ---> System.TypeInitializationException: An exception was thrown by the type initializer for Monobjc.ObjectiveCRuntime ---> System.EntryPointNotFoundException: monobjc_install_bridge .....

I am not sure if there is more to be done to initialize .NETLink when working with other external mono packages.

No matter what stage you're at in your education or career, TuteeHub will help you reach the next level that you're aiming for. Simply,Choose a subject/topic and get started in self-paced practice sessions to improve your knowledge and scores.