2010-06-08 40 views
0

平臺:Windows 7中,64位(x64),Visual Studio 2008的C++痛飲的Python(嵌入式Python在C++)工作在釋放,但不是在調試

我選擇Python的&痛飲作爲應用程序的腳本環境結合。

作爲一個原型,創建了一個初始化Python(Py_Initalize,Py_setPyHome等)的main()的簡單VS解決方案,執行test.py. &。在同一個解決方案中創建了另一個項目,它是一個簡單類的DLL。使用SWIG來包裝這個類。這個DLL是_MyClasses.pyd。 test.py創建我的類&的對象調用其成員函數。

所有這些在發佈模式中都很有用。但在調試模式下無法工作(甚至試圖在筆記本電腦上敲打我的頭;-))。我的工作

輸出看起來像這樣(在釋放&調試):

x64 
    -debug 
    - _MyClasses.pyd 
    - MyClasses.py 
    - test.exe 
    - test.py 
    - python26.dll 
    - python26_d.dll 

注意,調試版本對python26_d.lib鏈接。爲此,必須自己構建python!

test.py 
import MyClasses 

print "ello" 
m = MyClasses.Male("John Doe", 25) 
print m.getType() 

男是C++類。

The problem: 
Traceback (most recent call last): 
    File "test.py", line 6, in <module> 
    import MyClasses 
    File "...\x64\Debug\MyClasses.py", line 25, in <module> 
    _MyClasses = swig_import_helper() 
    File "...\x64\Debug\MyClasses.py", line 17, in swig_imp 
ort_helper 
    import _MyClasses 
ImportError: No module named _MyClasses 
[15454 refs] 

我用的Makefile &是新來的Visual Studio。我不知道誰是罪魁禍首:Swig,Python的調試版,Visual Studio,我的愚蠢。

預先感謝您。這將是一個很大的幫助。

回答

1

好吧 - 找到它。調試輸出DLL必須命名爲xxx_d.pyd !!在上述情況下,它將是_MyClasses_d.pyd