2024-04-23 22:34:22 发布
网友
我想从python运行一些c函数。你知道吗
我知道这是可以做到的
os.system("myapp.exe")
和其他类似的调用,但这将创建一个新的进程。你知道吗
我想让c代码从运行python代码的同一进程运行。你知道吗
如何做到这一点?你知道吗
我想到的一种方法是将c#编译成dll,并从中调用其函数,但我仍然无法使这种方法起作用。你知道吗
有更好的办法吗?你知道吗
您可以为此使用NuGet包^{}。1 对于与Python ctypes兼容的代码,需要添加属性[DllExport("<function name>", CallingConvention = CallingConvention.Cdecl)]
ctypes
[DllExport("<function name>", CallingConvention = CallingConvention.Cdecl)]
如果不修改C#程序集,就无法执行此操作。你知道吗
来自Python代码:
import ctypes a = ctypes.cdll.LoadLibrary(<path to dll>)
现在可以使用object a来调用C#程序集中以DllExport属性为前缀的方法。你知道吗
a
DllExport
来自the official website of UnmanagedExports的信息。你知道吗
[1]您可以随时使用COM,但是这要困难得多,而且涉及到 C#组件的更多重组。
使用不同的口译员是否都要考虑? 您可以使用IronPython,它允许您像导入普通python包一样导入dll,并将C类嵌入python脚本中。你知道吗
clr.AddReference('mylib.dll') # contains namespace MyLib import MyLib
您可以为此使用NuGet包^{} 。1
对于与Python
ctypes
兼容的代码,需要添加属性[DllExport("<function name>", CallingConvention = CallingConvention.Cdecl)]
如果不修改C#程序集,就无法执行此操作。你知道吗
来自Python代码:
现在可以使用object
a
来调用C#程序集中以DllExport
属性为前缀的方法。你知道吗来自the official website of UnmanagedExports的信息。你知道吗
[1]您可以随时使用COM,但是这要困难得多,而且涉及到 C#组件的更多重组。
使用不同的口译员是否都要考虑? 您可以使用IronPython,它允许您像导入普通python包一样导入dll,并将C类嵌入python脚本中。你知道吗
相关问题 更多 >
编程相关推荐