4
$\begingroup$

I have programmed this example for the last 6 years with various versions of Mathematica and .NET. This year I have moved to Version 10.0.2 and it doesn't work. I am using Visual Studio 12 for C#. My C# code is unremarkable:

string[] mlArgs = { "-linkmode", "launch", "-linkname", @"C:\Program Files\Wolfram Research\Mathematica\10.0\SystemFiles\Kernel\Binaries\Windows-x86-64\MathKernel.exe" };
            IKernelLink ml = null;
            try
            {
                ml = MathLinkFactory.CreateKernelLink(mlArgs);
                ml.WaitAndDiscardAnswer();
                string result = ml.EvaluateToOutputForm("2+2", 0);
                txtFirst.Text = result;
            }
            catch (Exception ee)
            {
                MessageBox.Show(ee.Message);
            }
            finally
            {
                if (ml != null)
                    ml.Close();
            }

The ERROR I receive is:

"The type initializer for 'Wolfram.NETLink.Internal.NativeLink' threw an exception."

along with:

"Unable to load DLL 'ml32i4.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)"

Any help much appreciated!

Thank you,

Kieran

$\endgroup$
  • 1
    $\begingroup$ On my system the file ml32i4.dll is found in the following directory: \Mathematica\10.0\SystemFiles\Links\MathLink\DeveloperKit\Windows\SystemAdditions -- can you confirm that this file is present in your installation? $\endgroup$ – Mr.Wizard Feb 8 '15 at 10:41
  • $\begingroup$ It should also be somewhere in %PATH% if it's to be found after linking. Is it? (N.B. this is a solution to your problem as well as a question.) $\endgroup$ – Oleksandr R. Feb 8 '15 at 14:01
5
$\begingroup$

In v10, the Windows version no longer installs the MathLink libraries to \Windows\System32. The recommended way of dealing with this is to 'redist' a copy of ml32i4.dll with the app.

$\endgroup$
  • $\begingroup$ Where can one download the redistributable package? $\endgroup$ – Oleksandr R. Feb 9 '15 at 15:07
  • 1
    $\begingroup$ $InstallationDirectory\SystemFiles\Links[MathLink/WSTP]\DeveloperKit[Windows/Windows-x86-64]\SystemAdditions $\endgroup$ – ihojnicki Feb 9 '15 at 17:45
  • $\begingroup$ I see. Well, those are just the DLLs themselves; I was expecting that there would be a proper installer available for download that would use the "side-by-side assembly" mechanism. Otherwise, shared-memory links will not work, because this requires both ends of the link to have loaded the same library from the same location. This is the main reason one would use a DLL in the first place rather than statically linking. Or does MathLink 4 do something else as well to address that situation? $\endgroup$ – Oleksandr R. Feb 9 '15 at 22:58
  • $\begingroup$ Even i3 didn't have this requirement. $\endgroup$ – ihojnicki Feb 10 '15 at 2:19
  • 1
    $\begingroup$ Thank you so much for your help. This has fixed the problem. I put the missing dll (copied from \Mathematica\10.0\SystemFiles\Links\MathLink\DeveloperKit\Windows\SystemAdditio​ns, note 64 bit versions also available) into the bin/debug or bin/release directory in my .NET project. Sorry for delay in responding - I was away. Best wishes, Kieran $\endgroup$ – user25245 Feb 16 '15 at 8:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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