我有一个VS10项目。我想构建一些C++代码,以便我可以在Python中使用它。我遵循boost教程并使其工作。然而,VS保持连接boost-python-vc100-mt-gd-1_44.lib,但它只是一个调用boost-python-vc100-mt-gd-1_44.dll的包装器。这就是为什么我需要将.dll与我的.dll(.pyd)文件复制。所以我想将boost:python静态链接到该.dll(.pyd)文件。但我在VS或编译器和链接器手册中找不到任何配置选项。最奇怪的是,我有一个使用boost :: filesystem的旧项目,它具有相同的配置,但项目链接是针对libboost-filesystem - *。lib,它是静态lib,所以没关系。我一直在Google上搜索几个小时而没有取得任何成功,这让我疯狂。MSVC - boost :: python静态链接到.dll(.pyd)
感谢您的任何帮助或建议。
Boost被设置为:link = static link = shared threading = single threading = multi variant = debug variant = release runtime-link = static runtime-link = shared因此一切都应该在那里。在VS中,如果我设置了C++> CodeGeneration> Runtime =“static”,我得到一个错误“致命错误C1189:#error:”使用静态运行时混合dll boost库是一个非常糟糕的主意......“ – kangcz 2010-11-08 09:56:03
嗯,由于某种原因,boost仍然假设你想链接到它的dll,你是否真的在安装目录中有所有版本的boost库?你可以从命名方案中看到它。我不确定你上面写出的选项是否是你需要为所有项目和跑步者设置'C++> CodeGeneration> Runtime =“static”',然后,boost配置系统应该选择'--build-type =或者你可以用#define选择所需的连接,检查boost手册 – 2010-11-08 15:50:52
嗨,我真的不知道#pragma的用途是什么,我搜索了头文件并找到/ boost/python/details/config.hpp来调用#pragma来请求.dll。我试着对它进行评论并请求我的静态.lib,但它没有工作。然后我看到在这个头文件中检查“#define BOOST_PYTHON_STATIC_LIB”,并在我的源文件中定义它。不,它链接好。 (但是这个定义被评论为已弃用)。 谢谢你的帮助。 – kangcz 2010-11-08 20:28:07