本文最后更新于 2024-08-27T14:59:49+00:00
使用Python在Windows下调用动态链接库
使用ctypes
来调用动态链接库。
调用C# .NET Framework的动态链接库
1 2 3 4 5 6 7 8 9 10 11 12
| using System;
namespace MyLibrary { public class MyFunctions { public static int Add(int a, int b) { return a + b; } } }
|
1 2 3 4 5 6 7 8
| import ctypes
mylib = ctypes.cdll.LoadLibrary('mylibrary.dll')
result = mylib.MyFunctions_Add(2, 3) print(result)
|
调用C# .NET 6.0/7.0的动态链接库
C# .NET 6.0/7.0使用了跨平台的.NET Core/Runtime,而不是传统的.NET Framework。
1 2 3 4 5 6 7 8 9 10 11 12
| using System;
namespace MyLibrary { public class MyClass { public int Add(int a, int b) { return a + b; } } }
|
1 2 3 4 5 6 7 8 9 10 11 12
| import ctypes
mylib = ctypes.CDLL('Path/To/Your/Library.dll')
mylib.Add.argtypes = [ctypes.c_int, ctypes.c_int] mylib.Add.restype = ctypes.c_int
result = mylib.Add(2, 3) print(result)
|
需要注意的是,上述示例中的路径和文件名应根据实际情况进行调整。另外,函数签名的定义是必要的,以便正确传递参数并获取返回值。
函数签名的详解
调用VB.NET的动态链接库
1 2 3 4 5
| Public Class MyFunctions Public Shared Function Add(ByVal a As Integer, ByVal b As Integer) As Integer Return a + b End Function End Class
|
1 2 3 4 5 6 7 8
| import ctypes
mylib = ctypes.cdll.LoadLibrary('mylibrary.dll')
result = mylib.MyFunctions_Add(2, 3) print(result)
|
调用C的动态链接库
1 2 3 4 5 6
| #include <stdio.h>
int add(int a, int b) { return a + b; }
|
1 2 3 4 5 6 7 8
| import ctypes
mylib = ctypes.cdll.LoadLibrary('mylibrary.dll')
result = mylib.add(2, 3) print(result)
|
调用C++的动态链接库
1 2 3 4 5 6
| extern "C" { int add(int a, int b) { return a + b; } }
|
1 2 3 4 5 6 7 8
| import ctypes
mylib = ctypes.cdll.LoadLibrary('mylibrary.dll')
result = mylib.add(2, 3) print(result)
|
需要注意的是,以上示例中的动态链接库的命名和函数名可能会因实际情况而异,请根据具体的库文件和函数名进行调整。