构建python接口时出现Swig体系结构错误

构建python接口时出现Swig体系结构错误,python,c++,macos,swig,Python,C++,Macos,Swig,操作系统:mac os 10.9.4 clang版本:基于LLVM 3.4svn的Apple LLVM版本5.1 clang-503.0.40 目标:x86_64-apple-darwin13.3.0 线程模型:posix python版本:python 2.7.8 v2.7.8:ee879c0ffa11,2014年6月29日,21:07:35 swig版本:3.0 C代码: #include <time.h> double My_variable = 3.0; int fact(

操作系统:mac os 10.9.4 clang版本:基于LLVM 3.4svn的Apple LLVM版本5.1 clang-503.0.40 目标:x86_64-apple-darwin13.3.0 线程模型:posix python版本:python 2.7.8 v2.7.8:ee879c0ffa11,2014年6月29日,21:07:35 swig版本: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-python示例.i gcc-c-fpic示例.c示例_wrap.c-I/usr/local/include/python2.7 gcc-sharedexample.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_64错误?

重复的?@JulienPalard谢谢。
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)