2013-08-28 66 views
0

我是python編程的新手,我正在尋找一些C++ dll到python中。我發現boost.python是這個問題最常見的答案,並且試圖用boost.python包中包含的一個簡單的'hello world'應用程序來測試它。在http://www.boost.org/doc/libs/1_54_0/libs/python/doc/tutorial/doc/html/python/hello.htmlBoost.Python在編譯時跳過dll

繼教程中,我使用Microsoft Visual Studio 10.0運行Windows 7。

我的Python目錄是'C:\Python27',升壓是'C:\Boost\boost_1_54_0'

我有用戶config.jam中的文件設置爲using msvc : 10.0 ;using python : 2.7 : C:\\Python27 ;

當我調用的bjam我得到以下..

...failed msvc.link.dll C:\Boost\boost_1_54_0\bin.v2\libs\python\build\msvc-10.0\debug\boost_python-vc100-gd-1_54.dll C:\Boost\boost_1_54_0\bin.v2\libs\python\build\msvc-10.0\debug\boost_python-vc100-gd-1_54.lib C:\Boost\boost_1_54_0\bin.v2\libs\python\build\msvc-10.0\debug\boost_python-vc100-gd-1_54.pdb... 
...removing C:\Boost\boost_1_54_0\bin.v2\libs\python\build\msvc-10.0\debug\boost_python-vc100-gd-1_54.lib 
...removing C:\Boost\boost_1_54_0\bin.v2\libs\python\build\msvc-10.0\debug\boost_python-vc100-gd-1_54.pdb 
...skipped <pbin\msvc-10.0\debug>hello_ext.pyd for lack of <pC:\Boost\boost_1_54_0\bin.v2\libs\python\build\msvc-10.0\debug>boost_python-vc100-gd-1_54.lib... 
...skipped <pbin\msvc-10.0\debug>hello_ext.lib for lack of <pC:\Boost\boost_1_54_0\bin.v2\libs\python\build\msvc-10.0\debug>boost_python-vc100-gd-1_54.lib... 
...skipped <pbin\msvc-10.0\debug>hello_ext.pdb for lack of <pC:\Boost\boost_1_54_0\bin.v2\libs\python\build\msvc-10.0\debug>boost_python-vc100-gd-1_54.lib... 
...skipped <p.>boost_python-vc100-gd-1_54.dll for lack of <pC:\Boost\boost_1_54_0\bin.v2\libs\python\build\msvc-10.0\debug>boost_python-vc100-gd-1_54.dll... 
...skipped <p.>hello_ext.pyd for lack of <pbin\msvc-10.0\debug>hello_ext.pyd... 
...skipped <pbin\hello.test\msvc-10.0\debug>hello for lack of <pbin\msvc-10.0\debug>hello_ext.pyd... 
...failed updating 3 targets... 
...skipped 7 targets... 

所有創建的是.obj文件:

C:\Boost\boost_1_54_0\libs\python\example\tutorial\bin\msvc-10.0\debug

從我的基本知識有限,似乎是在剛剛編譯之前被刪除依賴的文件。我長期努力尋找解決方案,但無濟於事。這感覺就像我錯過了一些非常基本的東西。

謝謝。

編輯:更新到Python 3.3似乎讓我更接近。它不再從bin.v2中刪除這兩個文件,但它仍然不編譯.dll或.pyb文件。

PS C:\Boost\boost_1_54_0\libs\python\example\tutorial> .\bjam 
...patience... 
...patience... 
...found 1681 targets... 
...updating 7 targets... 
msvc.link.dll bin\msvc-10.0\debug\hello_ext.pyd 
LINK : fatal error LNK1104: cannot open file 'boost_python-vc100-mt-gd-1_54.lib' 

    call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86 >nul 
link /NOLOGO /INCREMENTAL:NO /DLL /DEBUG /MACHINE:X86 /MANIFEST /subsystem:console/out:"bin\msvc-10.0\debug\hello_ext.pyd" 
/IMPLIB:"bin\msvc-10.0\debug\hello_ext.lib" /LIBPATH:"C:\Python33\libs" @"bin\msvc-10.0\debug\hello_ext.pyd.rsp" 
    if %ERRORLEVEL% NEQ 0 EXIT %ERRORLEVEL% 

...failed msvc.link.dll bin\msvc-10.0\debug\hello_ext.pyd bin\msvc-10.0\debug\hello_ext.lib bin\msvc-10.0\debug\hello_ext.pdb bin\msvc-10.0\debug\hello_ext.pdb... 
...skipped <p.>hello_ext.pyd for lack of <pbin\msvc-10.0\debug>hello_ext.pyd... 
...failed updating 3 targets... 
...skipped 1 target... 
+0

解決:首先,我通過運行'B2工具集= MSVC-10.0 --with-蟒--user-配置=用戶config.jam中--build型=完全stage'在'C重建的Boost.Python:\ Boost \ boost_1_54_0'然後我將'boost_python-vc100-mt-gd-1_54.lib'文件複製到tutorial文件夾中。不知道這是最好的解決方案,但它似乎現在正在工作。 – gargarvin

回答

2

解決:首先,我通過運行在C:\Boost\boost_1_54_0b2 toolset=msvc-10.0 --with-python --user-config=user-config.jam --build-type=complete stage重建Boost.Python的話,我複製boost_python-vc100-mt-gd-1_54.lib文件到教程文件夾。不知道這是最好的解決方案,但它似乎現在正在工作。

+0

您是否將'C:\ Boost \ boost_1_54_0'文件夾添加爲鏈接器的include目錄以查找'boost_python-vc100-mt-gd-1_54.lib'?當我在Windows上編譯boost.python應用程序時,我不需要將boost_python * .lib移動到本地目錄中。 – 2013-09-04 06:17:34

0

我建議提在配置文件中的Python安裝路徑:

using python : 2.7 : C:\Python27\; 

你有沒有cd到同一個目錄下Jamroot中和HELLO.CPP所在?

+0

對不起,我在用戶配置中也這樣做了,是的,我和jamroot和hello.cpp是同一個目錄。 在該「bin文件夾它創建包含任何與「MSVC-10.0」文件夾「hello.test中」文件夾包含「hello.obj」,「hello.obj.rsp」和「hello_ext.pyd.rsp」 – gargarvin

+0

它似乎最後不喜歡'toolset ',但我可以在調用bjam時添加該參數否?否則我仍然越來越...失敗更新3個目標...並且...跳過了1個目標... 謝謝 – gargarvin

+0

編輯:' msvc'將運行但仍然沒有骰子。 – gargarvin