python中*.pyd文件和DLL文件相同吗?
是的, .pyd 文件也是 dll ,但有一些差异。如果你有一个名为 foo.pyd
的DLL,那么它必须有一个函数 PyInit_foo()
。 然后你可以编写 Python 代码 “import foo” ,Python 将搜索 foo.pyd (以及 foo.py 、 foo.pyc )。如果找到它,将尝试调用 PyInit_foo()
来初始化它。你不应将 .exe 与 foo.lib 链接,因为这会导致 Windows 要求存在 DLL 。
请注意, foo.pyd 的搜索路径是 PYTHONPATH ,与 Windows 用于搜索 foo.dll 的路径不同。此外, foo.pyd 不需要存在来运行你的程序,而如果你将程序与 dll 链接,则需要 dll 。 当然,如果你想 import foo
,则需要 foo.pyd 。在 DLL 中,链接在源代码中用 __declspec(dllexport)
声明。 在 .pyd 中,链接在可用函数列表中定义。
来源:PY学习网:原文地址:https://www.py.cn/article.html