首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何构建python C++嵌入的boost示例

如何构建python C++嵌入的boost示例
EN

Stack Overflow用户
提问于 2015-08-13 14:55:21
回答 1查看 282关注 0票数 2

我需要包装一个C++库才能在python代码中使用。为此,我似乎最好使用boost python扩展/包装器。但现在,在编译文档中显示的每个示例时,我经常遇到问题。我能够让它运行python27和boost_1_55的组合,但是任何事情(python34,boost_1_58)似乎都不起作用。下面是生成2个基本示例的错误消息(我运行的是windows7 64位):

通用测试

代码语言:javascript
复制
C:\boost_1_59_0_b1\libs\python\example\quickstart>C:\boost_1_59_0_b1\bjam.exe toolset=msvc-12.0 --verbose-test test_ext
Performing configuration checks

- 32-bit                   : yes (cached)
- arm                      : no  (cached)
- mips1                    : no  (cached)
- power                    : no  (cached)
- sparc                    : no  (cached)
- x86                      : yes (cached)
...patience...
...patience...
...found 1923 targets...
...updating 4 targets...
msvc.link.dll bin\msvc-12.0\debug\threading-multi\extending.pyd
Creating library bin\msvc-12.0\debug\threading-multi\extending.pdb and object
bin\msvc-12.0\debug\threading-multi\extending.exp
LINK : fatal error LNK1207: incompatible PDB format in 'C:\boost_1_59_0_b1\libs\
python\example\quickstart\bin\msvc-12.0\debug\threading-multi\extending.pdb'; delete and rebuild

    call "C:\Users\XY\AppData\Local\Temp\b2_msvc_12.0_vcvarsall_x86.cmd" >nul
link /NOLOGO /INCREMENTAL:NO /DLL /NOENTRY /DEBUG /MACHINE:X86 /MANIFEST /subsystem:console /out:"bin\msvc-12.0\debug\threading-multi\extending.pyd" /IMPLIB:"bi
n\msvc-12.0\debug\threading-multi\extending.pdb" /LIBPATH:"C:\Python34\libs"   @
"bin\msvc-12.0\debug\threading-multi\extending.pyd.rsp"
    if %ERRORLEVEL% NEQ 0 EXIT %ERRORLEVEL%

...failed msvc.link.dll bin\msvc-12.0\debug\threading-multi\extending.pyd     bin\msvc-12.0\debug\threading-multi\extending.pdb...
...removing bin\msvc-12.0\debug\threading-multi\extending.pdb
...skipped <pbin\test_ext.test\msvc-12.0\debug\threading-multi>test_ext for lack
of <pbin\msvc-12.0\debug\threading-multi>extending.pyd...
...failed updating 2 targets...
...skipped 2 targets...

嵌入示例:

代码语言:javascript
复制
C:\boost_1_59_0_b1\libs\python\example\quickstart>C:\boost_1_59_0_b1\bjam.exe toolset=msvc-12.0 --verbose-test embedding
Performing configuration checks

- 32-bit                   : yes (cached)
- arm                      : no  (cached)
- mips1                    : no  (cached)
- power                    : no  (cached)
- sparc                    : no  (cached)
- x86                      : yes (cached)
...patience...
...patience...
...found 1992 targets...
...updating 3 targets...
compile-c-c++ bin\msvc-12.0\debug\threading-multi\embedding.obj
embedding.cpp
embedding.cpp(56) : error C2065: 'initembedded_hello' : undeclared identifier

call "C:\Users\XY\AppData\Local\Temp\b2_msvc_12.0_vcvarsall_x86.cm
d" >nul
cl /Zm800 -nologo @"bin\msvc-12.0\debug\threading-multi\embedding.obj.rsp"

...failed compile-c-c++ bin\msvc-12.0\debug\threading-multi\embedding.obj...
...skipped <pbin\msvc-12.0\debug\threading-multi>embedding.exe for lack of <pbin
\msvc-12.0\debug\threading-multi>embedding.obj...
...skipped <pbin\msvc-12.0\debug\threading-multi>embedding.pdb for lack of <pbin
\msvc-12.0\debug\threading-multi>embedding.obj...
...failed updating 1 target...
...skipped 2 targets...
EN

回答 1

Stack Overflow用户

发布于 2016-09-01 16:43:42

我在boost-python教程中也有类似的问题。我认为原因在于我没有python库的调试版本。为了解决这个问题,我将属性variant=release添加到对b2的调用中。这解决了不兼容pdb文件的问题,不过更好的选择是获得python的调试构建。不幸的是,这只会导致我进一步构建错误!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31991749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档