3

ここに私のC ++コードがあります:

#include<boost/python.hpp>
#include "mongo/client/dbclient.h"

using namespace mongo;
//DBClientConnection MCONNECT;

int OGS_ext(boost::python::list& ns){

  int prod(1);
  for(int i=0;i<len(ns);++i){
    prod*=boost::python::extract<int>(ns[i]);
  }
  return prod;

}
BOOST_PYTHON_MODULE(Simulate)
{
  using namespace boost::python;
  def("OGS_ext",OGS_ext);
}

そして、ここに私のMakefileがあります:

Simulate.so: Simulate.o
    g++ -shared -Wl,--export-dynamic Simulate.o -L/usr/lib -lboost_python  -L/usr/lib/python2.7/config -lpython2.7 -o Simulate.so
Simulate.o: Simulate.cpp
    g++ -fPIC -I/usr/include/python2.7 -I/usr/include -lmongoclient -lboost_thread-mt -lboost_filesystem -lboost_system -c Simulate.cpp

DBClientConnection MCONNECTコメントアウトすると、すべて正常に動作します。mongo 接続行のコメントを外すと、コンパイルされますが、Python で次のエラーが発生します。

import Simulate
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: ./Simulate.so: undefined symbol: _ZTVN5mongo18DBClientConnectionE

単純な製品を返していることはわかっていますが、最小限の例を提供するためにコードを削除しました。

mongodb と競合していますか?

4

0 に答える 0