2010-06-08 9 views
0

Plate-forme: Windows 7, 64 bits (64 bits), Visual Studio 2008C++ Swig Python (intégré Python en C++) fonctionne dans la version, mais pas dans Debug

J'ai choisi la liaison Swig Python & que l'environnement de script de l'application .

En tant que prototype, créé une solution VS simple avec main() qui initialise Python (Py_Initalize, Py_setPyHome, etc.) & exécute test.py. Dans la même solution créé un autre projet qui est une DLL d'une classe simple. SWIG utilisé pour envelopper cette classe. Cette DLL est le _MyClasses.pyd. test.py crée les objets de ma classe & appelle ses fonctions membres.

Tout cela fonctionne comme un charme en mode Release. Mais ne fonctionne pas en mode débogage (même essayé de me taper la tête sur l'ordinateur portable ;-)).

sortie de mon travail ressemble à ceci (à la fois libérer & debug):

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

Notez que la version de débogage est lié avec python26_d.lib. J'ai dû construire moi-même python pour ça!

test.py 
import MyClasses 

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

Mâle est la classe 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] 

Je suis habitué à Makefiles & suis nouveau à Visual Studio. Je ne sais pas qui est le coupable ici: Swig, la version debug de Python, Visual Studio, ma stupidité.

Merci d'avance. Ce sera d'une grande aide.

Répondre

1

Très bien - l'ai trouvé. La DLL de sortie de débogage doit être nommée xxx_d.pyd !! Dans le cas ci-dessus ce serait _MyClasses_d.pyd