MSVC - boost :: python静态链接到.dll(.pyd)

时间:2010-11-07 22:58:27

标签: c++ visual-studio-2010 static linker boost-python

我有一个VS10项目。我想构建一些C ++代码,以便我可以在python中使用它。我按照加速教程进行操作。然而VS保持链接boost-python-vc100-mt-gd-1_44.lib,但它只是一个调用boost-python-vc100-mt-gd-1_44.dll的包装器。这就是我需要使用.dll(.pyd)文件复制.dll的原因。所以我想将boost:python静态链接到.dll(.pyd)文件。但我在VS或编译器和链接器手册中找不到任何配置选项。最奇怪的是我有一个较旧的项目使用boost :: filesystem和相同的配置但项目链接libboost-filesystem - * .lib这是静态的lib所以没关系。我一直在谷歌搜索几个小时没有任何成功,它让我疯狂。

感谢您提供任何帮助或建议。

2 个答案:

答案 0 :(得分:1)

你可能不想这样做。当导入多个基于boost python的库时,静态链接的Boost python有许多问题和怪癖。 “但我只有一个”你说。你能保证你的用户不会有另一个吗?您可能希望将来使用另一个?坚持使用DLL。分发另一个DLL真的不是什么大不了的事。只需将它并排放在同一目录中即可。

答案 1 :(得分:0)

链接的库取决于项目的设置。有两种可能性:您可以构建

  1. 静态
  2. 动态
  3. c-runtime库的链接版本。根据选择的选项,boost会向链接器发送正确的#pragma。需要在构成程序的所有项目中一致地设置这些选项。所以转到“属性 - > c ++ - >代码生成”(或类似的,我只是猜测,现在没有VS启动并运行)并确保设置正确的选项(一致)。当然,您必须在...之前编译所需格式的boost库。