如何在同一进程中从python*运行c代码?

2024-04-23 22:34:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从python运行一些c函数。你知道吗

我知道这是可以做到的

os.system("myapp.exe")

和其他类似的调用,但这将创建一个新的进程。你知道吗

我想让c代码从运行python代码的同一进程运行。你知道吗

如何做到这一点?你知道吗


我想到的一种方法是将c#编译成dll,并从中调用其函数,但我仍然无法使这种方法起作用。你知道吗

有更好的办法吗?你知道吗


Tags: 方法函数代码进程osexesystemmyapp
2条回答

您可以为此使用NuGet包^{}1
对于与Python ctypes兼容的代码,需要添加属性
[DllExport("<function name>", CallingConvention = CallingConvention.Cdecl)]

如果不修改C#程序集,就无法执行此操作。你知道吗


来自Python代码:

import ctypes
a = ctypes.cdll.LoadLibrary(<path to dll>)

现在可以使用object a来调用C#程序集中以DllExport属性为前缀的方法。你知道吗


来自the official website of UnmanagedExports的信息。你知道吗


[1]您可以随时使用COM,但是这要困难得多,而且涉及到 C#组件的更多重组。

使用不同的口译员是否都要考虑? 您可以使用IronPython,它允许您像导入普通python包一样导入dll,并将C类嵌入python脚本中。你知道吗

clr.AddReference('mylib.dll') # contains namespace MyLib
import MyLib

相关问题 更多 >