Problèmes de compilation du code C en Python

J’utilise Anaconda pour Python 2.7.10 sous Windows 7, 64 bits. J’utilise également Visual Studio 2010. J’ai installé Microsoft Visual Studio pour Python.

Lorsque j’essaie de comstackr un code C en python (dans cmd):

C:\Anaconda\sms-tools-master\software\transformations_interface>python comstackModule.py build_ext --inplace 

Je reçois de nombreux avertissements et quelques erreurs indiquant que la dernière partie est la suivante:

 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\amd64\link.exe /DLL / nologo /INCREMENTAL:NO /LIBPATH:C:\Anaconda\libs /LIBPATH:C:\Anaconda\PCbuild\am d64 m.lib /EXPORT:initutilFunctions_C build\temp.win-amd64-2.7\Release\utilFunct ions.obj build\temp.win-amd64-2.7\Release\cutilFunctions.obj /OUT:C:\Anaconda\sm s-tools-master\software\models\utilFunctions_C\utilFunctions_C.pyd /IMPLIB:build \temp.win-amd64-2.7\Release\utilFunctions_C.lib /MANIFESTFILE:build\temp.win-amd 64-2.7\Release\utilFunctions_C.pyd.manifest LINK : fatal error LNK1181: cannot open input file 'm.lib' error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\BIN\\ amd64\\link.exe' failed with exit status 1181 

S’il vous plaît laissez-moi voir comment ce problème peut être résolu.

Commentez la ligne dans setup.py qui dit libraries=['m'] , puis réexécutez-la.

La nécessité de se lier à m pourrait être un élément GCC pour lier une bibliothèque mathématique, gérée par MSVCR dans un environnement Windows.

Et si je ne fais que commenter

 libraries=['m'] 

et utilise

 ext_modules = [Extension("utilFunctions_C",sourcefiles, include_dirs=py_inc + np_inc)] 

alors je reçois beaucoup d’avertissement (pas d’erreurs si possible) dont la dernière partie est:

C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ BIN \ amd64 \ link.exe / DLL / nologo / INCREMENTAL: NO / LIBPATH: C: \ Anaconda \ libs / LIBPATH: C: \ Anaconda \ PCbuild \ suis d64 / EXPORT: initutilFunctions_C build \ temp.win-amd64-2.7 \ Release \ utilFunctions.o bj build \ temp.win-amd64-2.7 \ Release \ cutilFunctions.obj / OUT: C: \ Anaconda \ sms-tool s- maître \ logiciel \ modèles \ utilFunctions_C \ utilFunctions_C.pyd / IMPLIB: build \ temp. win-amd64-2.7 \ Release \ utilFunctions_C.lib /MANIFESTFILE:build\temp.win-amd64-2.7 \ Release \ utilFunctions_C.pyd.manifest cutilFunctions.obj: avertissement LNK4197: exportation ‘initutilFunctions_C’ spécifiée plusieurs fois; utilisation de la première spécification Création de la bibliothèque build \ temp.win-amd64-2.7 \ Release \ utilFunctions_C.lib et de l’object build \ temp.win-amd64-2.7 \ Release \ utilFunctions_C.exp

Je pense que le problème est maintenant résolu. Merci LPs !!

Le simple fait de retirer .. libraries=['m'] .. de ext_modules m’a également aidé à comstackr sous Windows 2010. Pas d’erreurs ou d’avertissements. Voilà à quoi ça ressemble finalement,

 ext_modules = [Extension("utilFunctions_C",sourcefiles , include_dirs=py_inc + np_inc)] 

Merci beaucoup

Modifier …..

Voici le code complet pour comstackModule.py Veuillez vous référer aux commentaires pour plus de détails.

 from distutils.core import setup, Extension from distutils.sysconfig import * from distutils.util import * from Cython.Distutils import build_ext import numpy import os import os.path #defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION try: from distutils.command.build_py import build_py_2to3 \ as build_py except ImportError: from distutils.command.build_py import build_py try: from Cython.Distutils import build_ext except ImportError: use_cython = False else: use_cython = True py_inc = [get_python_inc()] np_lib = os.path.dirname(numpy.__file__) np_inc = [os.path.join(np_lib, 'core/include')] ext_inc = os sourcefiles = ["utilFunctions.c", "cutilFunctions.pyx"] setup( cmdclass = {'build_ext': build_ext}, #ext_modules = [Extension("utilFunctions_C",sourcefiles, libraries=['m'], include_dirs=py_inc + np_inc)] ext_modules = [Extension("utilFunctions_C",sourcefiles , include_dirs=py_inc + np_inc)] )