簡體   English   中英

使用Boost / Python的未定義符號

[英]Undefined symbol using Boost/Python

使用Boost 1.63.0,我編寫了以下代碼:
vectors.cpp

/* Boost/Python headers */ 
#include<boost/python/module.hpp>
#include<boost/python/def.hpp>
#include<boost/python/extract.hpp>
#include<boost/python/numpy.hpp>
#include<cmath>

using namespace boost::python;
namespace np = boost::python::numpy;

double eucnorm(np::ndarray axis){

  const int n = axis.shape(0);
  double norm = 0.0;
  for(int i = 0; i < n; i++){
    double A = boost::python::extract<double>(axis[i]);
    norm += A*A;
  }
  return sqrt(norm);
}

BOOST_PYTHON_MODULE(vectors){
  def("eucnorm", eucnorm);
}

我用以下方法編譯了這個:
g++ -shared -fpic -I /usr/include/python2.7 -I /foo/bar/boost_1_63_0 -lboost_python -o vectors.so

導入時出現以下錯誤:

from vectors import *
ImportError: ./vectors.so: undefined symbol: _ZN5boost6python9converter21object_manager_traitsINS0_5numpy7ndarrayEE10get_pytypeEv

這是什么意思,我該如何解決這個問題?

加:

-lboost_numpy -lboost_python 

當你構建.so時。

順便說一下,如果你想在構建時發現這些問題(而不是在Python中嘗試import ): 強制GCC通知共享庫中未定義的引用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM