在中构建python时Swig体系结构错误

2024-09-24 02:23:17 发布

您现在位置:Python中文网/ 问答频道 /正文

操作系统:mac os 10.9.4
clang版本:Apple LLVM 5.1版(clang-503.0.40)(基于LLVM 3.4svn)
目标:x86峎64-apple-darwin13.3.0
线程模型:posix
python版本:Python 2.7.8(v2.7.8:EE879C0FFA112014年6月29日,21:07:35)
痛饮版本:3.0在

C代码:

#include <time.h>
double My_variable = 3.0;

int fact(int n) {
 if (n <= 1) return 1;
 else return n*fact(n-1);
}

int my_mod(int x, int y) {
 return (x%y);
}

char *get_time()
{
 time_t ltime;
 time(&ltime);
 return ctime(&ltime);
}

swig代码:

^{pr2}$

swig -python example.i
gcc -c -fpic example.c example_wrap.c -I/usr/local/include/python2.7
gcc -shared example.o example_wrap.o -o _example.so

错误输出:

Undefined symbols for architecture x86_64:
  "_PyArg_ParseTuple", referenced from:
      __wrap_fact in example_wrap.o
      __wrap_my_mod in example_wrap.o
      __wrap_get_time in example_wrap.o
  "_PyArg_UnpackTuple", referenced from:
      _SwigPyObject_own in example_wrap.o
  "_PyBool_FromLong", referenced from:
      _SwigPyObject_richcompare in example_wrap.o
      _SwigPyObject_own in example_wrap.o
  "_PyCapsule_GetPointer", referenced from:
      _SWIG_Python_DestroyModule in example_wrap.o
  "_PyCapsule_Import", referenced from:
      _SWIG_Python_GetModule in example_wrap.o
  "_PyCapsule_New", referenced from:
      _SWIG_Python_SetModule in example_wrap.o
  "_PyDict_New", referenced from:
      _SWIG_Python_NewShadowInstance in example_wrap.o
  "_PyDict_SetItem", referenced from:
      _SWIG_Python_NewShadowInstance in example_wrap.o
  "_PyDict_SetItemString", referenced from:
      _init_example in example_wrap.o
      _SWIG_Python_InstallConstants in example_wrap.o
  "_PyErr_Clear", referenced from:
      _SWIG_AsVal_double in example_wrap.o
      _SWIG_Python_GetModule in example_wrap.o
      _SWIG_AsVal_long in example_wrap.o
  "_PyErr_Format", referenced from:
      _swig_varlink_getattr in example_wrap.o
      _swig_varlink_setattr in example_wrap.o
  "_PyErr_Occurred", referenced from:
      _SWIG_AsVal_double in example_wrap.o
      _swig_varlink_getattr in example_wrap.o
      _swig_varlink_setattr in example_wrap.o
      _SWIG_Python_GetModule in example_wrap.o
      _SWIG_AsVal_long in example_wrap.o
  "_PyErr_SetString", referenced from:
      _SWIG_Python_SetErrorMsg in example_wrap.o
  "_PyExc_AttributeError", referenced from:
      _SWIG_Python_ErrorType in example_wrap.o
      _swig_varlink_getattr in example_wrap.o
      _swig_varlink_setattr in example_wrap.o
  "_PyExc_IOError", referenced from:
      _SWIG_Python_ErrorType in example_wrap.o
  "_PyExc_IndexError", referenced from:
      _SWIG_Python_ErrorType in example_wrap.o
  "_PyExc_MemoryError", referenced from:
      _SWIG_Python_ErrorType in example_wrap.o
  "_PyExc_OverflowError", referenced from:
      _SWIG_Python_ErrorType in example_wrap.o
  "_PyExc_RuntimeError", referenced from:
      _SWIG_Python_ErrorType in example_wrap.o
  "_PyExc_SyntaxError", referenced from:
      _SWIG_Python_ErrorType in example_wrap.o
  "_PyExc_SystemError", referenced from:
      _SWIG_Python_ErrorType in example_wrap.o
  "_PyExc_TypeError", referenced from:
      _SWIG_Python_ErrorType in example_wrap.o
  "_PyExc_ValueError", referenced from:
      _SWIG_Python_ErrorType in example_wrap.o
  "_PyExc_ZeroDivisionError", referenced from:
      _SWIG_Python_ErrorType in example_wrap.o
  "_PyFloat_AsDouble", referenced from:
      _SWIG_AsVal_double in example_wrap.o
  "_PyFloat_FromDouble", referenced from:
      _Swig_var_My_variable_get in example_wrap.o
  "_PyFloat_Type", referenced from:
      _SWIG_AsVal_double in example_wrap.o
  "_PyInstance_NewRaw", referenced from:
      _SWIG_Python_NewShadowInstance in example_wrap.o
  "_PyInt_AsLong", referenced from:
      _SWIG_AsVal_double in example_wrap.o
      _SWIG_AsVal_long in example_wrap.o
  "_PyInt_FromLong", referenced from:
      _SWIG_From_int in example_wrap.o
  "_PyLong_AsDouble", referenced from:
      _SWIG_AsVal_double in example_wrap.o
  "_PyLong_AsLong", referenced from:
      _SWIG_AsVal_long in example_wrap.o
  "_PyLong_FromVoidPtr", referenced from:
      _SwigPyObject_long in example_wrap.o
  "_PyModule_AddObject", referenced from:
      _SWIG_Python_SetModule in example_wrap.o
  "_PyModule_GetDict", referenced from:
      _init_example in example_wrap.o
  "_PyObject_Call", referenced from:
      _SWIG_Python_NewShadowInstance in example_wrap.o
  "_PyObject_CallFunctionObjArgs", referenced from:
      _SwigPyObject_dealloc in example_wrap.o
  "_PyObject_Free", referenced from:
      _SwigPyPacked_New in example_wrap.o
      _SwigPyPacked_dealloc in example_wrap.o
      _SwigPyObject_dealloc in example_wrap.o
  "_PyObject_GenericGetAttr", referenced from:
      _SwigPyPacked_TypeOnce.tmp in example_wrap.o
      _SwigPyObject_TypeOnce.tmp in example_wrap.o
  "_PyObject_Init", referenced from:
      _SWIG_Python_newvarlink in example_wrap.o
      _SwigPyPacked_New in example_wrap.o
      _SwigPyObject_New in example_wrap.o
  "_PyObject_IsTrue", referenced from:
      _SwigPyObject_own in example_wrap.o
  "_PyObject_Malloc", referenced from:
      _SWIG_Python_newvarlink in example_wrap.o
      _SwigPyPacked_New in example_wrap.o
      _SwigPyObject_New in example_wrap.o
  "_PyString_AsString", referenced from:
      _SWIG_Python_str_AsChar in example_wrap.o
  "_PyString_ConcatAndDel", referenced from:
      _swig_varlink_str in example_wrap.o
      _SwigPyObject_repr in example_wrap.o
  "_PyString_Format", referenced from:
      _SwigPyObject_format in example_wrap.o
  "_PyString_FromFormat", referenced from:
      _SwigPyPacked_repr in example_wrap.o
      _SwigPyPacked_str in example_wrap.o
      _SwigPyObject_repr in example_wrap.o
  "_PyString_FromString", referenced from:
      _swig_varlink_repr in example_wrap.o
      _swig_varlink_str in example_wrap.o
      _SWIG_Python_str_FromChar in example_wrap.o
  "_PyString_FromStringAndSize", referenced from:
      _SWIG_FromCharPtrAndSize in example_wrap.o
  "_PyTuple_New", referenced from:
      _SwigPyObject_format in example_wrap.o
  "_PyTuple_SetItem", referenced from:
      _SwigPyObject_format in example_wrap.o
  "_PyType_IsSubtype", referenced from:
      _SWIG_AsVal_double in example_wrap.o
  "_PyType_Ready", referenced from:
      _swig_varlink_type in example_wrap.o
      _SwigPyPacked_TypeOnce in example_wrap.o
      _SwigPyObject_TypeOnce in example_wrap.o
  "_Py_InitModule4_64", referenced from:
      _init_example in example_wrap.o
      _SWIG_Python_SetModule in example_wrap.o
  "__PyObject_GetDictPtr", referenced from:
      _SWIG_Python_NewShadowInstance in example_wrap.o
  "__PyObject_New", referenced from:
      _SWIG_Python_NewPointerObj in example_wrap.o
  "__Py_NoneStruct", referenced from:
      _SWIG_Py_Void in example_wrap.o
  "__Py_NotImplementedStruct", referenced from:
      _SwigPyObject_richcompare in example_wrap.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

如何修复体系结构x86\u 64错误?在


Tags: infromnewexampleswigpyobjectdoublewrap