Nicht aufgelöste externe Symbole Gebäude C-Erweiterung für Python

Ich versuche momentan bauen eine C-Erweiterung in Windows. Der Fehler scheint im Zusammenhang zu finden nicht "standard" - Symbole in der python27.dll. Wie löse ich diese Symbole fehlen? Muss ich irgendwie sagen dem compiler, wo zu finden python27.dll oder ist etwas falsch mit meinem python27.lib?

Mein setup ist Folgendes:

  • Windows 7 64-bit
  • Python 2.7.4
  • Numpy 1.7
  • Schluck 2.0.9
  • Visual studio 9.0

Fand ich diesen link, der scheinbar ein ähnliches problem, aber mit Versionen von Dingen, die ich nicht verwende: http://bugs.python.org/issue15772

Ich bin mit python setup.py build_ext --inplace zum Bau der Erweiterung.

Den setup.py sieht aus wie die folgenden:

try:
    numpy_include = numpy.get_include()
except AttributeError:
    numpy_include = numpy.get_numpy_include()

fmm3d_module = Extension('_fmm3d', sources=['fmm3d.i', 'fmm3d.c'],
                         include_dirs = [numpy_include])

Alles kompiliert fein und führt dann den folgenden link-Befehl:

C:\Program Files (x86)\Microsoft Visual Studio 9.\VC\BIN\link.exe /DLL /nologo /INCREMENTAL:NO /LIBPATH:C:\Python27\libs /LIBPATH:C:\Python27\PCbuild\ amd64 /EXPORT:init_fmm3d build\temp.win-amd64-2.7\Release\fmm3d_wrap.obj build\temp.win-amd64-2.7\Release\fmm3d.obj /OUT:C:\Users\luke\Documents\Ranking\code\_fmm3d.pyd /IMPLIB:build\temp.win-amd64-2.7\Release\_fmm3d.lib /MANIFESTFILE:build\temp.win-amd64-2.7\Release\_fmm3d.pyd.manifest

Link bekomme ich Fehler im Zusammenhang mit Python-Symbole wie die folgenden:

fmm3d_wrap.obj : error LNK2019: unresolved external symbol __imp__PyString_AsString referenced in function _SWIG_Python_str_AsChar
fmm3d_wrap.obj : error LNK2019: unresolved external symbol __imp__PyString_FromString referenced in function _SWIG_Python_str_FromChar
fmm3d_wrap.obj : error LNK2019: unresolved external symbol __imp__PyExc_RuntimeError referenced in function _SWIG_Python_ErrorType
fmm3d_wrap.obj : error LNK2019: unresolved external symbol __imp__PyExc_AttributeError referenced in function _SWIG_Python_ErrorType

Ich habe festgestellt, das Python-lib-Datei befindet sich auf C:Python27\libs\python27.lib. Ich nehme an, die Symbole sind erwartet zu sein in hier. In der Tat, es sieht aus wie Sie sind mindestens auf die in dieser Datei. Zum Beispiel, läuft dumpbin -headers C:\Python27\libs\python27.lib zeigt der folgende Codeausschnitt:

  Version      : 0
  Machine      : 8664 (x64)
  TimeDateStamp: 5160619D Sat Apr 06 12:55:41 2013
  SizeOfData   : 0000001F
  DLL name     : python27.dll
  Symbol name  : PyString_AsString
  Type         : code
  Name type    : name
  Hint         : 629
  Name         : PyString_AsString

Dies führt mich zu glauben, dass die python27.lib sagt die Referenz für PyString_AsString ist enthalten in python27.dll.

Gibt es einige andere command-line-argument fehlt mir die Suche nach diesen Symbolen?

InformationsquelleAutor durden2.0 | 2014-06-03
Schreibe einen Kommentar