2011-12-30 98 views
0

我開發了一個使用swig的python擴展模塊。該模塊首先在linux上用gnu工具開發,並且所有工作都很好,但現在我使用visual C++將它移植到windows。使用vC++編譯swig python3,錯誤LNK2019

包裝文件生成成功結束;當我嘗試鏈接文件包裝並生成pyd擴展模塊時,問題就出現了。

我使用這個命令鏈接:

link /DEBUG /OUT:dist\Debug\_pipeit.pyd build\Debug\pipeit_wrap.obj /LIBPATH:..\Debug /LIBPATH:C:\python32\libs /DLL "pipeit.lib" "python32.lib" 

鏈接給這個系列linkking錯誤:

1>  Creazione della libreria dist\Debug\_pipeit.lib e dell'oggetto  dist\Debug\_pipeit.exp in corso... 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno  __imp__PyInstanceMethod_New non risolto nella funzione _SWIG_PyInstanceMethod_New 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyLong_FromVoidPtr non risolto nella funzione _SwigPyObject_long 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__Py_DecRef non risolto nella funzione _SwigPyObject_repr 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyUnicodeUCS2_Concat non risolto nella funzione _SwigPyObject_repr 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyUnicodeUCS2_FromFormat non risolto nella funzione _SwigPyObject_repr 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__Py_BuildValue non risolto nella funzione __SWIG_Py_None 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyObject_IsTrue non risolto nella funzione _SwigPyObject_own 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyBool_FromLong non risolto nella funzione _SwigPyObject_own 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyArg_UnpackTuple non risolto nella funzione _SwigPyObject_own 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyType_Ready non risolto nella funzione _SwigPyObject_TypeOnce 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyObject_GenericGetAttr non risolto nella funzione _SwigPyObject_TypeOnce 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyBytes_AsStringAndSize non risolto nella funzione "char * __cdecl SWIG_Python_str_AsChar(struct _object *)" ([email protected]@[email protected]@@Z) 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyUnicodeUCS2_AsUTF8String non risolto nella funzione "char * __cdecl SWIG_Python_str_AsChar(struct _object *)" ([email protected]@[email protected]@@Z) 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyUnicodeUCS2_FromString non risolto nella funzione "struct _object * __cdecl SWIG_Python_str_FromChar(char const *)" ([email protected]@[email protected]@[email protected]) 
1>pipeit_wrap.obj : error LNK2001: simbolo esterno __imp___Py_NotImplementedStruct non risolto 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyObject_Free non risolto nella funzione _SwigPyObject_dealloc 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyObject_CallFunctionObjArgs non risolto nella funzione _SwigPyObject_dealloc 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyObject_Init non risolto nella funzione _SwigPyObject_New 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyObject_Malloc non risolto nella funzione _SwigPyObject_New 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyErr_Occurred non risolto nella funzione "public: virtual double __thiscall SwigDirector_PDLElementVisitor::visitPDLLiteral(class gestface::PDLLiteral const &)" ([email protected][email protected]@[email protected]@@@Z) 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyObject_CallMethod non risolto nella funzione "public: virtual double __thiscall SwigDirector_PDLElementVisitor::visitPDLLiteral(class gestface::PDLLiteral const &)" ([email protected][email protected]@[email protected]@@@Z) 
1>pipeit_wrap.obj : error LNK2001: simbolo esterno __imp__PyExc_AttributeError non risolto 
1>pipeit_wrap.obj : error LNK2001: simbolo esterno __imp__PyExc_SystemError non risolto 
1>pipeit_wrap.obj : error LNK2001: simbolo esterno __imp__PyExc_ValueError non risolto 
1>pipeit_wrap.obj : error LNK2001: simbolo esterno __imp__PyExc_SyntaxError non risolto 
1>pipeit_wrap.obj : error LNK2001: simbolo esterno __imp__PyExc_OverflowError non risolto 
1>pipeit_wrap.obj : error LNK2001: simbolo esterno __imp__PyExc_ZeroDivisionError non risolto 
1>pipeit_wrap.obj : error LNK2001: simbolo esterno __imp__PyExc_TypeError non risolto 
1>pipeit_wrap.obj : error LNK2001: simbolo esterno __imp__PyExc_IndexError non risolto 
1>pipeit_wrap.obj : error LNK2001: simbolo esterno __imp__PyExc_RuntimeError non risolto 
1>pipeit_wrap.obj : error LNK2001: simbolo esterno __imp__PyExc_IOError non risolto 
1>pipeit_wrap.obj : error LNK2001: simbolo esterno __imp__PyExc_MemoryError non risolto 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp___PyObject_New non risolto nella funzione _SWIG_Python_NewPointerObj 
1>pipeit_wrap.obj : error LNK2001: simbolo esterno __imp__PyBaseObject_Type non risolto 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyObject_SetAttr non risolto nella funzione _SWIG_Python_NewShadowInstance 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyObject_Call non risolto nella funzione _SWIG_Python_NewShadowInstance 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyErr_SetString non risolto nella funzione "public: __thiscall Swig::DirectorException::DirectorException(struct _object *,char const *,char const *)" ([email protected]@@[email protected][email protected]@[email protected]) 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyErr_Clear non risolto nella funzione "int __cdecl SWIG_AsVal_double(struct _object *,double *)" ([email protected]@[email protected]@[email protected]) 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyLong_AsDouble non risolto nella funzione "int __cdecl SWIG_AsVal_double(struct _object *,double *)" ([email protected]@[email protected]@[email protected]) 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyLong_AsLong non risolto nella funzione "int __cdecl SWIG_AsVal_double(struct _object *,double *)" ([email protected]@[email protected]@[email protected]) 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyFloat_AsDouble non risolto nella funzione "int __cdecl SWIG_AsVal_double(struct _object *,double *)" ([email protected]@[email protected]@[email protected]) 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyType_IsSubtype non risolto nella funzione "int __cdecl SWIG_AsVal_double(struct _object *,double *)" ([email protected]@[email protected]@[email protected]) 
1>pipeit_wrap.obj : error LNK2001: simbolo esterno __imp__PyFloat_Type non risolto 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyArg_ParseTuple non risolto nella funzione __wrap_delete_SwigPyIterator 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyObject_GetAttr non risolto nella funzione _SWIG_Python_GetSwigThis 
1>pipeit_wrap.obj : error LNK2001: simbolo esterno __imp__PyExc_StopIteration non risolto 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyErr_SetObject non risolto nella funzione "void __cdecl SWIG_Python_SetErrorObj(struct _object *,struct _object *)" ([email protected]@[email protected]@[email protected]) 
1>pipeit_wrap.obj : error LNK2001: simbolo esterno __imp__PyExc_NotImplementedError non risolto 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyObject_Size non risolto nella funzione __wrap_SwigPyIterator_incr 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyLong_AsUnsignedLong non risolto nella funzione "int __cdecl SWIG_AsVal_unsigned_SS_long(struct _object *,unsigned long *)" ([email protected]@[email protected]@[email protected]) 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyLong_FromLong non risolto nella funzione "struct _object * __cdecl SWIG_From_ptrdiff_t(int)" ([email protected]@[email protected]@[email protected]) 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyTuple_SetItem non risolto nella funzione _SwigPyClientData_New 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyTuple_New non risolto nella funzione _SwigPyClientData_New 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyObject_GetAttrString non risolto nella funzione _SwigPyClientData_New 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyObject_IsInstance non risolto nella funzione _SwigPyClientData_New 
1>pipeit_wrap.obj : error LNK2001: simbolo esterno __imp__PyType_Type non risolto 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyLong_FromUnsignedLong non risolto nella funzione "struct _object * __cdecl SWIG_From_unsigned_SS_long(unsigned long)" ([email protected]@[email protected]@[email protected]) 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyUnicodeUCS2_FromStringAndSize non risolto nella funzione "struct _object * __cdecl SWIG_FromCharPtrAndSize(char const *,unsigned int)" ([email protected]@[email protected]@[email protected]) 
1>pipeit_wrap.obj : error LNK2001: simbolo esterno __imp__PySlice_Type non risolto 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PySlice_GetIndices non risolto nella funzione "void __cdecl std_list_Sl_std_string_Sg____delitem____SWIG_1(class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > *,struct PySliceObject *)" ([email protected]@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@[email protected]@[email protected]@[email protected]@@Z) 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyList_New non risolto nella funzione "struct _object * __cdecl std_map_Sl_std_string_Sc_gestface_Configuration_Sg__keys(class std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class gestface::Configuration,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class gestface::Configuration> > > *)" ([email protected]@[email protected]@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@[email protected][email protected][email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@@[email protected]@@[email protected]@[email protected]@@Z) 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyFloat_FromDouble non risolto nella funzione __catch$__wrap_Configuration_get_double_parameter$4 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyDict_SetItemString non risolto nella funzione _PyInit__pipeit 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyModule_GetDict non risolto nella funzione _PyInit__pipeit 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyModule_Create2 non risolto nella funzione _PyInit__pipeit 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyCapsule_Import non risolto nella funzione _SWIG_Python_GetModule 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyModule_AddObject non risolto nella funzione _SWIG_Python_SetModule 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyCapsule_New non risolto nella funzione _SWIG_Python_SetModule 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyImport_AddModule non risolto nella funzione _SWIG_Python_SetModule 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyCapsule_GetPointer non risolto nella funzione _SWIG_Python_DestroyModule 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyUnicode_InternFromString non risolto nella funzione _swig_varlink_repr 
1>pipeit_wrap.obj : error LNK2001: simbolo esterno __imp__PyExc_NameError non risolto 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyDict_SetItem non risolto nella funzione "public: static struct _object * __cdecl swig::traits_from<class std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class gestface::Configuration,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class gestface::Configuration> > > >::asdict(class std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class gestface::Configuration,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class gestface::Configuration> > > const &)" ([email protected][email protected][email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@[email protected][email protected][email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@@[email protected]@@[email protected]@[email protected]@@[email protected]@[email protected]@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@[email protected][email protected][email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@@[email protected]@@[email protected]@[email protected]@@Z) 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyDict_New non risolto nella funzione "public: static struct _object * __cdecl swig::traits_from<class std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class gestface::Configuration,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class gestface::Configuration> > > >::asdict(class std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class gestface::Configuration,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class gestface::Configuration> > > const &)" ([email protected][email protected][email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@[email protected][email protected][email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@@[email protected]@@[email protected]@[email protected]@@[email protected]@[email protected]@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@[email protected][email protected][email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@@[email protected]@@[email protected]@[email protected]@@Z) 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PySequence_GetItem non risolto nella funzione "public: static int __cdecl swig::traits_asptr<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class gestface::Configuration> >::asptr(struct _object *,struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class gestface::Configuration> * *)" ([email protected][email protected][email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@@[email protected]@@[email protected]@[email protected]@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@@[email protected]@@Z) 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PySequence_Size non risolto nella funzione "public: static int __cdecl swig::traits_asptr<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class gestface::Configuration> >::asptr(struct _object *,struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class gestface::Configuration> * *)" ([email protected][email protected][email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@@[email protected]@@[email protected]@[email protected]@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@@[email protected]@@Z) 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PySequence_Check non risolto nella funzione "public: static int __cdecl swig::traits_asptr<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class gestface::Configuration> >::asptr(struct _object *,struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class gestface::Configuration> * *)" ([email protected][email protected][email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@@[email protected]@@[email protected]@[email protected]@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@@[email protected]@@Z) 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PySequence_Fast non risolto nella funzione "public: static int __cdecl swig::traits_asptr<class std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class gestface::Configuration,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class gestface::Configuration> > > >::asptr(struct _object *,class std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class gestface::Configuration,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class gestface::Configuration> > > * *)" ([email protected][email protected][email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@[email protected][email protected][email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@@[email protected]@@[email protected]@[email protected]@@[email protected]@[email protected]@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@[email protected][email protected][email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@@[email protected]@@[email protected]@[email protected]@@Z) 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyErr_Format non risolto nella funzione "void __cdecl SWIG_Python_AddErrorMsg(char const *)" ([email protected]@[email protected]) 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyObject_Str non risolto nella funzione "void __cdecl SWIG_Python_AddErrorMsg(char const *)" ([email protected]@[email protected]) 
1>pipeit_wrap.obj : error LNK2019: riferimento al simbolo esterno __imp__PyErr_Fetch non risolto nella funzione "void __cdecl SWIG_Python_AddErrorMsg(char const *)" ([email protected]@[email protected]) 
1>dist\Debug\_pipeit.pyd : fatal error LNK1120: 81 esterni non risolti 
1> make: *** [_pipeit.pyd] Error 1120 
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(183,5): error MSB3073: uscita dal comando "make -f wrap/python/Makefile 
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(183,5): error MSB3073: :VCEnd" con codice 2. 

pipeit.lib是我的模塊。

python32.lib位於c:\ python32 \ libs中,而python3.dll位於c:\ python32 \ DLLs中。 從python3.dll上的一個dumpbin輸出看來,所有函數都被正確導出。

有什麼想法?

謝謝 盧卡

+0

沒有建議?也許我應該把問題與更多的信息結合起來? – 2012-01-10 07:23:41

回答

1

鏈接/ DEBUG [...]

也許你是混合調試和釋放庫。也可能是64位版本的python 3的問題。嘗試使用python 3 x86進行版本構建。