Microsoft .NET

Load a 64-bit C# library (a .NET Framework) in 64-bit Python (view the C# source code). Include the 'net' argument to indicate that the .dll file is for the .NET Framework. To load the 32-bit library in 32-bit Python use '/dotnet_lib32.dll'.

>>> from msl.loadlib import LoadLibrary
>>> from msl.examples.loadlib import EXAMPLES_DIR
>>> net = LoadLibrary(EXAMPLES_DIR + '/dotnet_lib64.dll', 'net')

Tip

'clr' is an alias for 'net' and can also be used as the libtype

Attention

To configure pythonnet to use the .NET Core runtime, you must either run

from pythonnet import load
load("coreclr")

or define a PYTHONNET_RUNTIME=coreclr environment variable

import os
os.environ["PYTHONNET_RUNTIME"] = "coreclr"

before LoadLibrary is called. To use the Mono runtime, replace "coreclr" with "mono".

The dotnet_lib64 library contains a reference to the DotNetMSL module (which is a C# namespace), the StaticClass class, the StringManipulation class and the System namespace

Create an instance of the BasicMath class in the DotNetMSL namespace and call the multiply_doubles method

>>> bm = net.lib.DotNetMSL.BasicMath()
>>> bm.multiply_doubles(2.3, 5.6)
12.879999...

Create an instance of the ArrayManipulation class in the DotNetMSL namespace and call the scalar_multiply method

>>> am = net.lib.DotNetMSL.ArrayManipulation()
>>> values = am.scalar_multiply(2., [1., 2., 3., 4., 5.])
>>> values
<System.Double[] object at ...>
>>> [val for val in values]
[2.0, 4.0, 6.0, 8.0, 10.0]

Use the reverse_string method in the StringManipulation class to reverse a string

>>> net.lib.StringManipulation().reverse_string('abcdefghijklmnopqrstuvwxyz')
'zyxwvutsrqponmlkjihgfedcba'

Use the static add_multiple method in the StaticClass class to add five integers

>>> net.lib.StaticClass.add_multiple(1, 2, 3, 4, 5)
15

One can create objects from the System namespace,

>>> System = net.lib.System

for example, to create a 32-bit signed integer,

>>> System.Int32(9)
<System.Int32 object at ...>

or, a one-dimensional Array of the specified Type

>>> array = System.Array[int](list(range(10)))
>>> array
<System.Int32[] object at ...>
>>> list(array)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> array[0] = -1
>>> list(array)
[-1, 1, 2, 3, 4, 5, 6, 7, 8, 9]