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