드라이버가 문제없이 성공적으로 컴파일되었습니다. 나는 드라이버를 테스트하는 간단한 프로그램을 코딩했다. 기본적으로 다음 코드입니다 :MongoDB C++ 레거시 드라이버 1.1.2 작동하지 않음 - VS2013, Win 10, boost-1_62로 컴파일
static std::vector<mongo::HostAndPort> hosts = { mongo::HostAndPort("xxxxxxxx-a0.mlab.com:xxxxx"), mongo::HostAndPort("xxxxxxxx-a1.mlab.com:xxxxx") };
static mongo::DBClientReplicaSet con("rs-xxxxxxxx", hosts, 0);
std::string errmsg;
mongo::client::initialize();
con.connect();
con.auth("dbname", "userid", "password", errmsg);
나는 문제없이 코드를 컴파일했습니다. exe가 bebug 모드에서 시작할 수 없으므로 0xc000a200 오류가 발생합니다. 나는 전혀 디버그 할 수 없었다. 릴리스 모드에서는 시작시 바로 중지되었습니다.
Assertion failed: px != 0, file C:\Boost\include\boost-1_62\boost/smart_ptr/scoped_ptr.hpp, line 105
그리고 오류 팝업이 있었다 : 나는 콘솔에 경고 향상이 있었다 눈치 내가 디버그를 선택할 수 있었고, 여기에 프로그램이 중지 된 위치입니다
MongoDB C++ Legacy Driver Error
가 - 마지막 replica_set_monitor.cpp 줄 :
void ReplicaSetMonitor::createIfNeeded(const string& name, const set<HostAndPort>& servers) {
LOG(3) << "ReplicaSetMonitor::createIfNeeded " << name;
boost::lock_guard<boost::mutex> lk(setsLock);
ReplicaSetMonitorPtr& m = sets[name];
if (!m)
m = boost::make_shared<ReplicaSetMonitor>(name, servers);
// Don't need to hold the lifetime lock for safeGo as
// 1) we assume the monitor is created as the contract of this class is such that initialize()
// must have been called.
// 2) replicaSetMonitorWatcher synchronizes safeGo internally using the _monitorMutex
replicaSetMonitorWatcher->safeGo();
}
도와주세요! 고마워요!
감사! 그게 다야! 하지만 지금은 예외가 있습니다 : – Harold
'con.auth ("dbname", "userid", "password", errmsg); ': mongodrivertest.exe의 0x00007FFD87F77788에서 처리되지 않은 예외 : Microsoft C++ 예외 : mongo :: UserException이 메모리 위치 0x00000056C6FFF070에 있습니다. – Harold
프로그램에 파산 : '부울 DBClientWithCommands :: 인증 (...을 << 이름 << saslCommandPasswordFieldName << << saslCommandDigestPasswordFieldName << digestPassword PASSWORD_TEXT));' – Harold