使用boost::python的链接出错
来源:互联网 发布:java string.split 编辑:程序博客网 时间:2024/05/18 00:34
被这个东西折磨了一个晚上,先是听度娘海扯胡诌,发现各种不靠谱。就自己研究,在几乎要放弃时解决了问题。
首先是调试库的问题。因为网上下下来的安装版python是没有调试库的,所以调试编不过。居然还有人说直接把.lib改个名就变成调试库了。我去了,这么巧?函数地址都一样??不知编过的兄弟用的是哪个版本。我的是python3.3,这个版本肯定不行。就采用猥琐的办法吧:
#ifdef _DEBUG #undef _DEBUG #include <boost/python.hpp>#else #include <boost/python.hpp>#endif
这样调试库的问题就pass了,接下来当我检查了无数遍。发现接口函数还是没实现。一共就两个库,搞毛线啊。不过我这情况稍微复杂一些,vs2008、vs2012、python2.7、python3.3、boost1.53都有。首先我先把boost那边的编译库研究一通,发现都已经生成了。如果你曾经加载到vs2008项目中进行编译,这些库都有了,不用bjam的,虽然这是我过了很久才意识到。不过库的名字不太对,在前面多了个lib,在/stage文件夹中,改过来就行。当然我用源码引入项目的方式,以及各种方式重新生成了一遍库,还是不行。我开始担心会不会由于2.7和3.3改了不少,接口有变化。最后发现....都不是。因为我不使用boost一样不行! 汗了...
当确定跟这个boost库没关系之后,我又把目标放到python33.lib这个库上了。去掉所有不可能的,剩下的不管多不可能,都是真相。这话是谁说的,真TM有哲理,我想到了一个也仅剩的一个可能,这个库有问题。官方库也出错?我就上官网去算账去了。最后,一个猥琐的细节引起了我的注意。我机器是64位的。所以我的python装的也是64位的,但是项目是32位的,所以用32位的寻址连接64位的静态库,这不找死呢。我赶紧下了个32位的覆盖安装了,果然...就没问题了。
坑我一晚上,写个博客祭奠一下我为此无谓浪费的脑细胞,为他们立此墓碑,警醒后人...
本篇博客出自阿修罗道,转载请注明出处:http://blog.csdn.net/fansongy/article/details/9108083
- 使用boost::python的链接出错
- boost python的使用
- 使用boost的库链接问题generic_category()
- Poco STLPort boost 调试版本链接出错
- 使用Boost的DLL库管理动态链接库
- Boost.Python使用小结
- 使用Boost.Python
- boost python 使用
- boost.python 使用
- 使用Boost.Python开发
- Boost.Python:安装使用(兼具Boost.Python库中Python编译版本的修改)
- 使用wxWidgets库链接wxString出错的问题
- vs2010使用boost::interpocess编译出错
- Python使用selenium出错
- 【boost】boost::bind的使用
- boost python的问题
- boost.python的嵌入
- boost的MulticastSocket(示例,出错代码)
- 直接设置Activity的背景颜色
- Python补充01 序列的方法
- Linux framebuffer介绍
- overridePendingTransition
- HDU1721(找规律)
- 使用boost::python的链接出错
- 如何快速去掉Windows 7快捷方式小箭头
- 小光标消灭季
- 穆利堂推荐--‘我,要,钱’
- contiki学习笔记 clock部分
- 穆利堂推荐--工作之外八小时,用辛苦换幸福
- 开启新一片蓝海——异构计算完全解析
- android中到webservice用法
- Python小题目 针对快速教程