【问题标题】:How are .pyd files made from C++ projects?.pyd 文件是如何由 C++ 项目制作的?
【发布时间】:2022-01-07 18:46:12
【问题描述】:

我当前的目标是让这个 repo CV-camera-finder 与 Python 3.10 兼容。在 README 文件中,原始发布者说

使用媒体基础查找已连接摄像机列表的简单功能。这只是在https://github.com/Microsoft/Windows-classic-samples/tree/master/Samples/Win7Samples/multimedia/mediafoundation/MFCaptureToFile 中找到的示例的修改代码,可在 python 中使用。

下载 pymf.pyd(32-bit -> file in folder 32, 64-bit -> ...) 到您的 PYTHONPATH 以使用它。如果你想修改它,编辑 cpp 文件并重建它。

我对 Python 的了解最多是中级和 C++ 初学者。我下载了 Visual Studio 2022 并尝试自己重建它,但没有成功。我使用了他的 cap.cpp 和 pymf.cpp 文件,以及来自引用的 Media Foundation 示例的 capture.h 文件,因为我的印象是基于我不需要其他任何东西的包含。我将我的 Python.h 包含指向位于 3.10 包含文件夹中的那个,假设这可以解决问题。

我遇到了多个问题。第一个是

unable to open 'python310.lib'

我添加了一个指向 3.10 libs 文件夹的附加库依赖项。之后,这是我现在遇到的错误。

LNK2001 unresolved external symbol main
LNK1120 1 unresolved externals

我显然对此感到头疼,但我真的很想让它在 Python 3.10 上工作。任何人都可以提供有关将其构建并制作成 .pyd 的步骤/建议/教程/等吗?

【问题讨论】:

  • LNK2001 unresolved external symbol main能否提供a Minimal, Reproducible Example
  • 嗨,你有没有让这个工作?我也想使用 CV-Camera-Finder,但它对 Python 3.7 的依赖打破了它

标签: python c++ visual-studio ms-media-foundation pyd


【解决方案1】:

确保您在 Visual Studio 中通过此链接 writing python extension 更改您的项目设置。特别是链接器下的Additional Include DirectoriesAdditional Library Directories。另外,查看target file extensionpyddll 的配置类型。

如果你有这个,连同来自 MF github 的 capture.h,它应该可以工作。另外,我在capture.h 中添加了以下几行,否则 VS 将找不到某些库。

#pragma once
#include <mfreadwrite.h>
#include <Dbt.h>

使用 python3.8 和 windows 10 测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    • 2012-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    相关资源
    最近更新 更多