【问题标题】:using SWIG with C++在 C++ 中使用 SWIG
【发布时间】:2010-08-02 12:20:54
【问题描述】:

大家好

我正在尝试使用 SWIG 将 C++ 代码导出到 Python。 我在网站上阅读的 C 示例确实有效,但 C++ 代码有问题。

这是我调用的行

swig -c++ -python SWIG_TEST.i g++ -c -fPIC SWIG_TEST.cpp SWIG_TEST_wrap.cxx -I/usr/include/python2.4/ gcc --shared SWIG_TEST.o SWIG_TEST_wrap.o -o _SWIG_TEST.so -lstdc++

完成后,我收到以下错误消息

ImportError:./_SWIG_TEST.so:未定义符号:Py_InitModule4

你知道它是什么吗?

【问题讨论】:

    标签: c++ python swig


    【解决方案1】:

    您似乎没有链接到 Python 运行时库。类似于将-lpython24 添加到您的 gcc 行。 (我目前手头没有 Linux 系统)。

    【讨论】:

      【解决方案2】:

      您可以尝试使用gcc 构建共享库

      g++ -shared SWIG_TEST.o SWIG_TEST_wrap.o -o _SWIG_TEST.so
      

      而不是直接使用ld

      【讨论】:

        【解决方案3】:

        正如 Mark 所说,链接到 python 库是一个问题。运行python-config --ldflags 可以获得关于需要成功链接哪些标志的提示的好方法。事实上,编译测试的一种特别轻松的方法如下:

        swig -c++ -python SWIG_TEST.i
        g++ -c `python-config --cflags` -fPIC SWIG_TEST.cpp SWIG_TEST_wrap.cxx
        gcc --shared `python-config --ldflags` SWIG_TEST.o SWIG_TEST_wrap.o -o _SWIG_TEST.so -lstdc++
        

        请注意,python-config 并不完美;它有时会给你额外的东西,或者冲突的东西。但这肯定会有很大帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-09-06
          相关资源
          最近更新 更多