1

我有一个 VS10 项目。我想构建一些 C++ 代码,以便可以在 python 中使用它。我遵循了boost教程并让它工作了。然而 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 这是静态库,所以没关系。我已经在谷歌上搜索了几个小时而没有任何成功,这让我发疯了。

感谢您的任何帮助或建议。

4

2 回答 2

1

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

于 2010-11-10T16:18:26.213 回答
0

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

  1. 静态的
  2. 动态的

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

于 2010-11-08T07:12:58.710 回答