Comment obtenir un python .pyd pour Windows à partir de c/c++ code source? (mise à jour: vive désormais en Python dans le cas qu'est ce que vous voulez)

Comment obtenir à partir de C/C++ code source de l'extension d'un fichier pyd pour windows (ou un autre élément que j'ai pu importer de Python)?

edit: La bibliothèque spécifique que je voulais utiliser (VIF) a été inclus dans OpenCV 2.4.3 donc, mon besoin de cette compétence est allé loin pour le moment. Dans le cas où vous êtes venu ici à la recherche d'VIVE, ici est une simple VIVE Python démo que j'ai posté.


J'ai le Vive code source (télécharger) que je voudrais construire et utiliser dans mon application en python. J'ai eu aussi loin que la génération d'un rapide.pyd fichier... mais c'était de 0 octets. Si il y a un mieux /autre manière de viser un rythme rapide.pyd fichier, alors bien sûr je suis ouvert à ça aussi.

edit: s'il vous Plaît ignorer toutes les tentatives dans ma question initiale ci-dessous et voir ma réponse qui a été rendue possible par obmarg détaillées de procédure pas à pas

Où vais-je tort?

  1. Distutils sans chemin de la bibliothèque: j'ai d'Abord essayé à la construction de la source, tout comme celle de distutils et suivantes setup.py (je viens de commencer l'apprentissage de distutils c'est donc un coup de feu dans l'obscurité). La structure de la progression RAPIDE du code source est en bas de cette question pour la référence.
    from distutils.core import setup, Extension
    module1 = Extension('brisk',
        include_dirs = ['include', 'C:/opencv2.4/build/include', 'C:/brisk/thirdparty/agast/include'],
        #libraries = ['agast_static', 'brisk_static'],
        #library_dirs = ['win32/lib'],
        sources = ['src/brisk.cpp'])
    setup (name = 'BriskPackage',
        ext_modules = [module1])

    Instantané qui m'a donné les lignes suivantes et un 0 octet rapide.pyd quelque part dans le dossier de création. Si près?

    running build
    running build_ext
  2. Distutils avec le chemin de la bibliothèque: Scratch tentative. J'ai donc ajouté les deux de la bibliothèque de lignes qui sont commentées ci-dessus setup.py. Cela semble ok jusqu'à ce que j'ai obtenu cette erreur de couplage:
    creating build\lib.win32-2.7
    C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\link.exe /DLL /nologo /INCREMENTAL:NO /LIBPATH:win32/lib /LIB
    PATH:C:\Python27_32bit\libs /LIBPATH:C:\Python27_32bit\PCbuild agast_static.lib brisk_static.lib /EXPORT:initbrisk build
    \temp.win32-2.7\Release\src/brisk.obj /OUT:build\lib.win32-2.7\brisk.pyd /IMPLIB:build\temp.win32-2.7\Release\src\brisk.
    lib /MANIFESTFILE:build\temp.win32-2.7\Release\src\brisk.pyd.manifest
    LINK : error LNK2001: unresolved external symbol initbrisk
    build\temp.win32-2.7\Release\src\brisk.lib : fatal error LNK1120: 1 unresolved externals
    error: command '"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\link.exe"' failed with exit status 1120
  3. Incontrôlée agitant dans tous les sens: j'ai pensé que peut-être les bibliothèques devaient être construites, donc j'ai fait un cours intensif (beaucoup de plantage) avec cmake + mingw - mingw + vc++ express 2010, comme suit:
    • cmake gui: source: c:/brisk, build: c:/brisk/build
    • cmake gui: configurer pour Visual Studio 10
    • cmake gui: utiliser les options par défaut et de générer (CMAKE_BACKWARDS_COMPATIBILITY, CMAKE_INSTALL_PREFIX, EXECUTABLE_OUTPUT_PATH, LIBRARY_OUTPUT_PATH)
    • De VC++ Express 10: Changement de Libérer et de construire la solution générée par cmake et d'obtenir environ 20 pages de ce à quoi ressemblent à des non-critique des avertissements suivie par tous réussi. Remarque - pas de dll sont générés par cette. Il génère les bibliothèques suivantes de taille similaire à ceux inclus avec le téléchargement:
      win32/lib/Release/
          agast_static.lib
          brisk_static.lib
  4. Plus en agitant.

Pertinentes RAPIDE de la source de la structure du fichier de référence:

build/ (empty)
include/brisk/
    brisk.h
    hammingsse.hpp
src
    brisk.cpp
    demo.cpp
thirdparty/agast/
    include/agast/
        agast5_8.h ....
        cvWrapper.h
    src/
        agast5_8.cc ...
    CMakeLists.txt
win32/
    bin/
        brisk.mexw32
        opencv_calib3d220.dll ...
    lib/
        agast_static.lib
        brisk_static.lib
CMakeLists.txt
FindOpenCV.cmake
Makefile
double possible de Étapes pour faire de la forte télécharger un travail d'OpenCV (~2.4) FeatureDetector et DescriptionExtractor dans un Python cv2 interface sur Windows
Ne pas re-post: meta.stackexchange.com/questions/7046/...
La dernière on avait pas de réponses ou des commentaires, je vais donc le supprimer. Celui-ci est plus spécifique, alors j'espère que quelqu'un peut indiquer un endroit où je suis allé mal. Pour être clair pour quelqu'un d'autre qui voit cela, le premier texte de cette question a un lien pour le message original. Je n'étais pas d'essayer de se faufiler dans un autre.
D'accord, si. J'aurais juste totalement refait le premier au lieu de faire un nouveau. Merci pour la méta lien.

OriginalL'auteur KobeJohn | 2012-05-19