【问题标题】:Can I use MinGW compiled Python extensions together with Visual C++ compiled ones?我可以将 MinGW 编译的 Python 扩展与 Visual C++ 编译的扩展一起使用吗?
【发布时间】:2014-01-09 17:22:01
【问题描述】:
在 Windows 下编译 Python 扩展时遇到问题,我问过a question。其中一个答案没有回答我的问题,但值得作为一个问题单独提出。
如果我在 Windows 下使用 Visual C++ 编译的 Python 发行版,如果我使用 Visual C++ 编译的扩展和 MinGW 编译的扩展,我会有什么问题吗?
这将允许我使用 MinGW,因为它比配置 MS 编译器更容易。
【问题讨论】:
标签:
python
windows
compilation
python-extensions
【解决方案1】:
它没有得到官方支持,但我认为它应该可以工作。 Python 公开了 extern "C" 函数(使用 C 链接),因此您应该能够从 MSVC 调用它们。但这只是 Python 本身。扩展呢? PyMODINIT_FUNC 也有 extern "C" 在其中,因此也允许从 MSVC 调用它。通过函数指针传递给 Python 的函数也应该可以工作,因为它们默认使用 cdecl 调用约定,但不需要 C 链接(或 C 名称修改),因为它们是通过指针调用的。总而言之,它应该是 Just Work™。