2012-02-27 42 views
1

我一直在試圖使用Boost在Windows 7擴展Python和C++這是我的代碼至今:試圖接口的Python 3與C++使用Boost

C++代碼,hellomodule.cpp:

#include <iostream> 
using namespace std; 

void say_hello(const char* name) { 
    cout << "Hello " << name << "!\n"; 
} 

#include <boost/python/module.hpp> 
#include <boost/python/def.hpp> 
using namespace boost::python; 

BOOST_PYTHON_MODULE(hello) { 
    def("say_hello", say_hello); 
} 

Python代碼,setup.py:

#!/usr/bin/env python 

from distutils.core import setup 
from distutils.extension import Extension 

setup(name="PackageName", 
     ext_modules = [ 
      Extension("hello", ["hellomodule.cpp"], 
        libraries = ["boost_python"]) 
        ] 
    ) 

我嘗試在我Python32目錄中打開命令提示符,然後運行 ​​「蟒蛇setup.py構建」 建立這個。我在我的環境變量中包含了vcvarsall.bat的路徑。

現在我得到的錯誤:

error_image

我幾乎沒有使用C++的經驗,而且我是Boost的新手。任何幫助,將不勝感激。

編輯:這是在MVSC++ 2010中完成的,但是我使用的是v9.0工具集,並且也在MVSC++ 2008 Express中嘗試過。 hellomodule.cpp的路徑是「C:\ Users \ Amir \ Documents \ Visual Studio 2010 \ Projects \ BoostExample \ BoostExample \ hellomodule.cpp」

+0

「hellomodule.cpp」:沒有這樣的文件或目錄,它意味着你有錯誤的路徑 – fazo 2012-02-27 22:07:46

回答

1

編譯器找不到hellomodule.cpp,因爲它(可能)isn 't in c:\ python32。嘗試將hellomodule.cpp移動到c:\ python32 - 或者更好的辦法是將你的目錄改成hellomodule.cpp的路徑 - 然後重建。它可能會導致一些其他編譯器錯誤,但至少你會通過這個第一個問題。

祝你好運。

+0

感謝你的迴應;我嘗試從C++源代碼所在的目錄運行,並且糾正了這個錯誤,但是作爲你預測它會導致其他編譯器錯誤[Here's](http://i.imgur.com/RdFT4.png)新的輸出,我肯定有boost/python/module.hpp,這只是讓編譯器找到它。任何想法?+1爲你的幫助到目前爲止。:) – Tagc 2012-02-27 22:22:11

+1

@Tagc當然,現在你需要將Boost路徑添加到編譯器的includes列表。有幾種方法可以做到這一點,但現在只需在命令提示符下鍵入以下命令:'set INCLUDE =%INCLUDE%; '因此,如果boost在'c:\ boost'中,您可以鍵入'set INCLUDE = %INCLUDE%; c:\ boost'。然後發現新的錯誤;;)[編輯:請注意,我假設您仍在構建命令提示,並且在運行vcvarsall.bat之後進行此更改] – user1201210 2012-02-27 22:49:25

+0

再次感謝。 :)我以爲我已經在MVSC++ 2010和MVSC++ 2008 Express中設置了包含和庫路徑,但是按照您所說的去做,肯定會幫助我取得進展。現在它似乎能夠找到包含文件,但它抱怨無法訪問庫文件,但我猜這將通過類似於您剛剛描述的方式來解決.http:// i。 imgur.com/rJAAo.png – Tagc 2012-02-28 16:12:02