Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

Has anyone have any luck running .NET/Link on Mono?

When I run .NET/Link to call Mathematica from within a Mono program, this is the error message I receive.

Unhandled Exception:
System.TypeInitializationException: An exception was thrown by the type initializer for Wolfram.NETLink.Internal.NativeLink ---> System.DllNotFoundException: mathlink
  at (wrapper managed-to-native) Wolfram.NETLink.Internal.MacMathLinkAPIProvider:MLBegin (intptr)
  at Wolfram.NETLink.Internal.MacMathLinkAPIProvider.extMLBegin (IntPtr zero) [0x00000] in <filename unknown>:0 
  at Wolfram.NETLink.Internal.NativeLink..cctor () [0x00000] in <filename unknown>:0 
  --- End of inner exception stack trace ---
  at Wolfram.NETLink.MathLinkFactory.createMathLink0 (System.String cmdLine, System.String[] argv) [0x00000] in <filename unknown>:0 
  at Wolfram.NETLink.MathLinkFactory.CreateMathLink (System.String cmdLine) [0x00000] in <filename unknown>:0 
  at Wolfram.NETLink.MathLinkFactory.createKernelLink0 (System.String cmdLine, System.String[] argv) [0x00000] in <filename unknown>:0 
  at Wolfram.NETLink.MathLinkFactory.CreateKernelLink (System.String cmdLine) [0x00000] in <filename unknown>:0 

Now the C# code for calling Mathematica is:

    _kl = MathLinkFactory.CreateKernelLink("-linkmode launch -linkname '\"/Applications/Mathematica.app/Contents/MacOS/MathKernel\" -mathlink'");

The same argument worked for J/Link, but for some reason does not work on NETLink.

share|improve this question
add comment

1 Answer

up vote 10 down vote accepted

To use .NET/Link from a Mono program, you need to make sure that the system can find the MathLink shared library. This generally means adding the appropriate path to an environment variable that the system uses for library lookups. You can do this is in the standard way that is appropriate for your OS/shell program, either in a shell config file or on the command line. For example:

On OSX:

export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/Applications/Mathematica.app/Contents/Frameworks/mathlink.framework
mono MyProgram

On Linux:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/Wolfram/Mathematica/9.0/SystemFiles/Libraries/Linux
mono MyProgram

Most of .NET/Link works fine with Mono.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.