Boost-Python C++ 项目构建,如何使用来自 Python 的新库?
Boost-Python C++ project builds, How to use the new library from Python?
我有一个 VS12 项目并使用 boost-python 公开了一些 类 到 Python。在出现一些链接问题后,我的项目终于可以正确构建并生成 MySDK.lib
和 MySDK.dll
。我将 Boost Python 模块称为与库相同的模块,即 BOOST_PYTHON_MODULE(MySDK)
。这些 .lib
和 .dll
是我使用 Python 中的 MySDK
所需要的吗?
我正在使用 Pycharm 社区,但找不到将生成的 MySDK.lib
和 MySDK.dll
作为 Python 库模块导入的方法。
遗憾的是,关于在 Boost Python 编码练习之后要做什么的信息不多。
我将我的 VS12 项目输出文件扩展名更改为 .pyd
(Right Click on Project -> Properties -> Linker -> General -> Output File -> changed to $(OutDir)$(TargetName).pyd
),现在我可以从命令行加载 Python 中的库,但仍然无法从 Pycharm.
之后,将.pyd
(以及.lib
和.dll
)所在的目录创建在Path
变量下。然后 Pycharm 能够成功加载并且 运行 我的自定义 boost-python 库。
UPDATE Python 理解并可以加载的 pyd 只是将 dll
重命名为 pyd
。因此,一种更简洁的方法是保留 VS12 项目,就像生成原始 $(OutDir)$(TargetName)$(TargetExt)
即 dll
输出一样,只需添加一个 Post-Build Event
将 dll
复制到 pyd
:
(Right Click on Project -> Properties -> Configuration Properties -> Build Events -> Post-Build Event -> Command Line
) 并添加 copy $(OutDir)$(TargetName)$(TargetExt) $(OutDir)$(TargetName).pyd
我有一个 VS12 项目并使用 boost-python 公开了一些 类 到 Python。在出现一些链接问题后,我的项目终于可以正确构建并生成 MySDK.lib
和 MySDK.dll
。我将 Boost Python 模块称为与库相同的模块,即 BOOST_PYTHON_MODULE(MySDK)
。这些 .lib
和 .dll
是我使用 Python 中的 MySDK
所需要的吗?
我正在使用 Pycharm 社区,但找不到将生成的 MySDK.lib
和 MySDK.dll
作为 Python 库模块导入的方法。
遗憾的是,关于在 Boost Python 编码练习之后要做什么的信息不多。
我将我的 VS12 项目输出文件扩展名更改为 .pyd
(Right Click on Project -> Properties -> Linker -> General -> Output File -> changed to $(OutDir)$(TargetName).pyd
),现在我可以从命令行加载 Python 中的库,但仍然无法从 Pycharm.
之后,将.pyd
(以及.lib
和.dll
)所在的目录创建在Path
变量下。然后 Pycharm 能够成功加载并且 运行 我的自定义 boost-python 库。
UPDATE Python 理解并可以加载的 pyd 只是将 dll
重命名为 pyd
。因此,一种更简洁的方法是保留 VS12 项目,就像生成原始 $(OutDir)$(TargetName)$(TargetExt)
即 dll
输出一样,只需添加一个 Post-Build Event
将 dll
复制到 pyd
:
(Right Click on Project -> Properties -> Configuration Properties -> Build Events -> Post-Build Event -> Command Line
) 并添加 copy $(OutDir)$(TargetName)$(TargetExt) $(OutDir)$(TargetName).pyd