Visual Studio 如何从C++项目生成.pyd文件?

h7wcgrx3  于 2022-12-14  发布在  其他
关注(0)|答案(2)|浏览(529)

我当前的目标是使这个repo CV-camera-finder与Python 3.10兼容。
一个用media foundation找到连接的摄像机列表的简单函数。这只是https://github.com/Microsoft/Windows-classic-samples/tree/master/Samples/Win7Samples/multimedia/mediafoundation/MFCaptureToFile中的一个示例代码的修改,以便在python中使用。
下载pymf.pyd(32位-〉文件在文件夹32,64位-〉...)到你的PYTHONPATH中使用它。如果你想修改它,编辑cpp文件并重建它。
我对Python的了解最多是中级和C++初学者。我下载了Visual Studio 2022,并试图自己重建它,但没有成功。我使用了他的cap.cpp和pymf.cpp文件,以及引用的媒体基金会示例中的capture.h文件,因为我认为基于include,我不需要其他任何东西。h到位于3. 10 include文件夹中的一个,假设这将解决问题。
我遇到了很多问题。第一个是

unable to open 'python310.lib'

我添加了一个指向3.10 libs文件夹的额外库依赖项。完成后,下面是我现在得到的错误。

LNK2001 unresolved external symbol main
LNK1120 1 unresolved externals

我很清楚我对这件事感到困惑,但我真的很想让它在Python 3.10中工作。有人能提供一个步骤/建议/教程/等等来构建它并将其制作成一个.pyd吗?

oxf4rvwz

oxf4rvwz1#

请确保在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和windows10上测试过。

4uqofj5v

4uqofj5v2#

LNK2001无法解析的外部符号main
程序缺少入口函数。如果不想使用main,请指定项目的配置类型为lib或dll。

相关问题