为什么boost需要编译的库这么坑爹?

facat 2011-07-29 11:51:08
最近编译了一个boost.python来用,编译使用的是complete参数,也就是编译所有版本的python库。但使用时发现所有的静态版本库都是不能用的,只有动态版本库可以用。请问大家有没有遇到过类似的问题?
...全文
730 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
facat 2011-10-25
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 vo_go 的回复:]

boost有安装版的 叫boostpro 自己编译太麻烦 用boostpro喝喝咖啡就搞掂了
[/Quote]
我是用gcc开发的啊,所以要用gcc编译好的版本。
Vo_Go 2011-10-22
  • 打赏
  • 举报
回复
boost有安装版的 叫boostpro 自己编译太麻烦 用boostpro喝喝咖啡就搞掂了
rendao0563 2011-08-05
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 facat 的回复:]

引用 19 楼 rendao0563 的回复:

引用 18 楼 facat 的回复:

引用 17 楼 rendao0563 的回复:

facat 不会是傻乎乎 用Bjam编译的吧


原来是要自己编译boost.python库啊 囧?


不是这个意思. 是说Bjam用起来很麻烦. 我这一般都用cmake编译boost的. 并且可以直接生成eclipse的项目文件.……
[/Quote]

这是下载地址 http://gitorious.org/boost/cmake

cmake版的boost是上面这个站点自己弄的. 你选择对应的版本就好. cmake我空间有下载的. windows版和linux版.
facat 2011-08-04
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 xunxun1982 的回复:]

编译时选项内加入
-DBOOST_PYTHON_STATIC_LIB
[/Quote]
谢谢你,但到底是在哪里加入这个选项?
xunxun 2011-08-04
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 facat 的回复:]

引用 15 楼 xunxun1982 的回复:

编译时选项内加入
-DBOOST_PYTHON_STATIC_LIB

谢谢你,但到底是在哪里加入这个选项?
[/Quote]
什么IDE就查什么IDE在哪里加
facat 2011-08-04
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 rendao0563 的回复:]

引用 18 楼 facat 的回复:

引用 17 楼 rendao0563 的回复:

facat 不会是傻乎乎 用Bjam编译的吧


原来是要自己编译boost.python库啊 囧?


不是这个意思. 是说Bjam用起来很麻烦. 我这一般都用cmake编译boost的. 并且可以直接生成eclipse的项目文件. 直接用eclipse编译. 很方便. 想要什么版本的……
[/Quote]
俺去看一下cmake
rendao0563 2011-08-04
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 facat 的回复:]

引用 17 楼 rendao0563 的回复:

facat 不会是傻乎乎 用Bjam编译的吧


原来是要自己编译boost.python库啊 囧?
[/Quote]

不是这个意思. 是说Bjam用起来很麻烦. 我这一般都用cmake编译boost的. 并且可以直接生成eclipse的项目文件. 直接用eclipse编译. 很方便. 想要什么版本的打个勾就行了. 不过要熟悉下cmake的使用.
facat 2011-08-04
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 rendao0563 的回复:]

facat 不会是傻乎乎 用Bjam编译的吧
[/Quote]

原来是要自己编译boost.python库啊 囧?
rendao0563 2011-08-04
  • 打赏
  • 举报
回复
facat 不会是傻乎乎 用Bjam编译的吧
xunxun 2011-08-02
  • 打赏
  • 举报
回复
编译时选项内加入
-DBOOST_PYTHON_STATIC_LIB
facat 2011-08-02
  • 打赏
  • 举报
回复
**** Build of configuration shared for project EC_Boost ****

**** Internal Builder is used for build ****
g++ -LC:\Python25\libs -LE:\Program\Lib\boost\stage\lib -shared -o hello_ext.so main.o C:\Python25\libs\python25.lib ..\..\..\Lib\boost\stage\lib\libboost_python-mgw45-mt-d-1_47.a -lpython25
main.o: In function `inithello_ext':
E:\Program\MyPro\EC_Boost\shared/../main.cpp:10: undefined reference to `_imp___ZN5boost6python6detail11init_moduleEPKcPFvvE'
main.o:E:/Program/Lib/boost/boost/python/type_id.hpp:165: undefined reference to `_imp___ZN5boost6python6detail12gcc_demangleEPKc'
main.o:E:/Program/Lib/boost/boost/python/converter/builtin_converters.hpp:161: undefined reference to `_imp___ZN5boost6python9converter19do_return_to_pythonEPKc'
main.o:E:/Program/Lib/boost/boost/python/def.hpp:91: undefined reference to `_imp___ZN5boost6python6detail17scope_setattr_docEPKcRKNS0_3api6objectES3_'
main.o:E:/Program/Lib/boost/boost/python/make_function.hpp:38: undefined reference to `_imp___ZN5boost6python7objects15function_objectERKNS1_11py_functionE'
main.o: In function `py_function_impl_base':
E:/Program/Lib/boost/boost/python/object/py_function.hpp:21: undefined reference to `_imp___ZTVN5boost6python7objects21py_function_impl_baseE'
main.o: In function `~caller_py_function_impl':
E:/Program/Lib/boost/boost/python/object/py_function.hpp:31: undefined reference to `_imp___ZN5boost6python7objects21py_function_impl_baseD2Ev'
main.o:E:/Program/Lib/boost/boost/python/converter/pytype_function.hpp:68: undefined reference to `_imp___ZN5boost6python9converter8registry5queryENS0_9type_infoE'
main.o:E:/Program/Lib/boost/boost/python/converter/pytype_function.hpp:69: undefined reference to `_imp___ZNK5boost6python9converter12registration25expected_from_python_typeEv'
collect2: ld returned 1 exit status
Build error occurred, build is stopped
Time consumed: 570 ms.


编译环境为eclipse + gcc

调用了python的python25.dll 和python25.lib 还有boost.python的libboost_python-mgw45-mt-d-1_47.a

rendao0563 2011-08-02
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 facat 的回复:]

引用 11 楼 rendao0563 的回复:

是怎么个不能用? 提示找不到lib?


出来用那个唯一的dll库以外,其他的都是一堆undefined reference

再补充一下 我用是gcc 在eclipse中编写程序。
[/Quote]

发上来错误信息 以及你的环境说明.

rendao0563 2011-08-01
  • 打赏
  • 举报
回复
是怎么个不能用? 提示找不到lib?
healer_kx 2011-08-01
  • 打赏
  • 举报
回复
坑跌。
facat 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zhangsongcui 的回复:]
引用 6 楼 facat 的回复:

引用 5 楼 zhangsongcui 的回复:
#define BOOST_PYTHON_STATIC_LIB

我是指编译的boost只用用dll版本的,不是说把自己写的程序编译成lib版供python去调用。。

你先加上试试
[/Quote]
在哪里加?Bjam中吗?
ryfdizuo 2011-08-01
  • 打赏
  • 举报
回复
你可以指定编译其中某个库。
zhangsongcui 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 facat 的回复:]

引用 5 楼 zhangsongcui 的回复:
#define BOOST_PYTHON_STATIC_LIB

我是指编译的boost只用用dll版本的,不是说把自己写的程序编译成lib版供python去调用。。
[/Quote]
你先加上试试
facat 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 rendao0563 的回复:]

是怎么个不能用? 提示找不到lib?
[/Quote]

出来用那个唯一的dll库以外,其他的都是一堆undefined reference

再补充一下 我用是gcc 在eclipse中编写程序。
facat 2011-07-31
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhangsongcui 的回复:]
#define BOOST_PYTHON_STATIC_LIB
[/Quote]
我是指编译的boost只用用dll版本的,不是说把自己写的程序编译成lib版供python去调用。。
zhangsongcui 2011-07-30
  • 打赏
  • 举报
回复
#define BOOST_PYTHON_STATIC_LIB
加载更多回复(4)

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧