Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将boostpython与C++;在Linux中 我的开发商店已经把一个相当有用的基于Python的测试套装在一起,我们想用它测试一些基于Linux的C++代码。我们已经得到了Boost附带的测试项目进行编译(在目录中键入'bjam'即可),但我们的实际项目存在问题_C++_Boost Python - Fatal编程技术网

将boostpython与C++;在Linux中 我的开发商店已经把一个相当有用的基于Python的测试套装在一起,我们想用它测试一些基于Linux的C++代码。我们已经得到了Boost附带的测试项目进行编译(在目录中键入'bjam'即可),但我们的实际项目存在问题

将boostpython与C++;在Linux中 我的开发商店已经把一个相当有用的基于Python的测试套装在一起,我们想用它测试一些基于Linux的C++代码。我们已经得到了Boost附带的测试项目进行编译(在目录中键入'bjam'即可),但我们的实际项目存在问题,c++,boost-python,C++,Boost Python,从源代码(v1.35.0)构建boost库和bjam,当我运行bjam时,在bin/gcc-4.1.2/debug目录中得到一个.so。我运行python和“导入”,得到: 导入错误:libboost\u python-gcc41-d-1\u 35.so.1.35.0:无法打开共享对象文件:没有此类文件或目录 查看库目录,我有以下内容: libboost_python-gcc41-mt-1_35.solibboost_python-gcc41-mt-1_35.so.1.35.0libboost_

从源代码(v1.35.0)构建boost库和bjam,当我运行bjam时,在bin/gcc-4.1.2/debug目录中得到一个.so。我运行python和“导入”,得到: 导入错误:
libboost\u python-gcc41-d-1\u 35.so.1.35.0
:无法打开共享对象文件:没有此类文件或目录

查看库目录,我有以下内容:
libboost_python-gcc41-mt-1_35.so
libboost_python-gcc41-mt-1_35.so.1.35.0
libboost_python-gcc41-mt.so

显然,我需要-d而不是-mt库,或者指向-mt库而不是-d,但是我不知道如何使我的Jamroot文件做到这一点

当我安装Debian Etch版本的库时,我得到了“No-Jamfile in/usr/include”-并且有一个Debian bug说他们遗漏了系统级Jamfile

我更希望它能从源头上运行,所以如果有人对解决图书馆问题有任何建议,我很乐意听取他们的意见


回答1:谢谢你的提示。那么,你知道我该如何让它改用机器翻译库吗?虽然我找不到任何用于调试模式的标志,但我使用的bjam或Jamfile似乎更像是一个问题。虽然我知道如何在对GCC的调用中包含特定的库,但我看不到从Boost端进行配置的方法。

一个重要的一点:-d当然意味着调试,并且应该只链接到项目的调试版本,并且只能与python的调试版本一起使用(或者不,请参见下文)。如果您尝试将调试库链接到非调试构建,或者尝试将调试pyd导入非调试python,则会发生不好的事情

mt表示多线程,与d正交。您可能希望在项目中使用mt非d

恐怕我不知道如何告诉gcc链接的对象(我一直在使用VisualStudio)。有一件事可以尝试:

man gcc
应该告诉您如何在链接器上强制特定LIB的地方


编辑:实际上,您可以将项目的调试版本导入到python的非调试版本中。无论在何处包含python.h,都应包含boost/python/detail/wrap_python.hpp。

如果还想构建boost库的调试变体,则必须使用选项
--build type=complete
调用bjam


在Debian上,您可以在python2.x-dbg包中获得调试Python解释器。如果您想使用系统Boost,Boost库的调试版本在libboost1.xy-dbg中。

找到了解决方案!Boost默认情况下构建调试构建。键入“bjam release”构建发布配置。(据我所知,任何文档中都没有列出这一点。)请注意,这与将构建类型更改为release不同,因为这并不构建发布配置。按照Torsten的建议进行“完整”构建也不会阻止它只构建调试版本

还值得注意的是,-d库位于
/bin.v2/libs/python/build/
/debug/中,而发行版库位于
/release中,未安装到顶级“libs”目录中

谢谢你的其他建议