Как мне использовать rundll32.exe для запуска pyd?

Я сделал файл .pyd с этим источником:

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

и я хочу запустить hello() из rundll32 (или любого кода C вообще)

Я пробовал rundll32 hello.pyd,hello() и rundll32 hello.pyd,hello, но ни один из них не работал

Я также просмотрел код C и не нашел ничего полезного.


person DiamondDemon    schedule 05.12.2020    source источник
comment
Я также скомпилировал pyx как dll, чтобы посмотреть, будет ли это иметь значение, но это не помогло.   -  person DiamondDemon    schedule 05.12.2020


Ответы (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, например

    Пустой привет();

person Florent    schedule 05.12.2020
comment
единственная экспортируемая функция - PyInit_test. Я попытался перекомпилировать ее как просто `print (hello world) и запустить функцию с помощью rundll32, и она не работает. - person DiamondDemon; 06.12.2020