ここに私の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 と競合していますか?