【问题标题】:How would I use rundll32.exe to run a pyd?我将如何使用 rundll32.exe 来运行 pyd?
【发布时间】:2020-12-05 03:57:35
【问题描述】:

我用这个来源制作了一个 .pyd 文件:

def hello():
    print("Hello world")

我想从 rundll32(或任何一般的 C 代码)运行 hello()

我尝试了rundll32 hello.pyd,hello()rundll32 hello.pyd,hello,但都没有成功

我也查看了C代码,没有发现任何有用的东西

【问题讨论】:

  • 我还将 pyx 编译为 dll 看看是否会有所作为,但没有

标签: c rundll32 pyd


【解决方案1】:

不要使用 rundll32 而是使用 C。

使用此工具将您的 hello.pyd 作为 dll 进行检查: http://www.nirsoft.net/utils/dll_export_viewer.html

所以你会看到:如果你的文件是一个真正的 .dll。

如果是真实的DLL:

  • 您将在 hello.pyd 中看到导出的内容
  • 您可以使用 IMPLIB 生成用于链接的 .lib 文件。

http://docwiki.embarcadero.com/RADStudio/Sydney/en/IMPLIB.EXE,_the_Import_Library_Tool_for_Win32

  • 例如在你的 c 源代码中声明你的函数

    你好();

【讨论】:

  • 唯一导出的函数是 PyInit_test 我尝试将它重新编译为 `print("hello world") 并使用 rundll32 运行该函数,但它不起作用
猜你喜欢
  • 2012-08-23
  • 2012-08-23
  • 2012-02-24
  • 1970-01-01
  • 2021-12-20
  • 1970-01-01
  • 2011-03-13
  • 2021-08-21
  • 2011-06-09
相关资源
最近更新 更多