簡體   English   中英

"mongo-cxx-driver 庫構建但持久的鏈接和調試問題"

[英]mongo-cxx-driver library builds but persistent linking and debug issues

我正在嘗試構建 mongo-cxx-driver 以在帶有 Visual Studio 2015 的 Windows 10 上與 Cinder 一起使用。Cinder 使用 Boost 1.58,因此我針對他們包含的 Boost 版本構建了驅動程序。

我嘗試完全按照 github 上的說明進行操作,但是我得到的最終庫和 dll 似乎與它們有問題。 我很想幫助調試我的編譯出錯的地方!

這就是我所做的,在此處<\/a>鏡像官方說明

步驟1<\/h2>我按照此處<\/a>的說明安裝了 MongoDB C 驅動程序。 只需在 Windows 構建說明下復制\/粘貼 CMake 調用即可完美運行。

第2步<\/h2>

由於我使用的是 Windows 和 Visual Studio 2015,因此我應該為 Polyfill 使用 Boost 選項。

第 3 步<\/h2>

我解壓了從 github 下載的 mongo-cxx-driver-3.0.2; 然后我進入mongo-cxx-driver-r3.0.2\\mongo-cxx-driver-r3.0.2<\/code>並運行 CMake:

然后構建並安裝項目:

一切運行良好,我從 CMake 確認沒有錯誤。 萬歲!

問題<\/h2>

在測試時,我嘗試運行測試程序

如果我在 Debug 中運行它,那么它會在打印出帶有“Debug Assertion Failed”消息的數據庫后崩潰:

檢查斷點表明它會導致文件末尾的行出現錯誤——可能是在從行清理期間

我的第一個懷疑是 .lib 文件和 .dll 可能是為發布而構建的——所以我在發布時構建了它。

我得到一個錯誤mongo_test.exe has triggered a breakpoint<\/code> with the breakpoint deep inside bsoncxx.dll!bsoncxx::v_noabi::string::view_or_value::terminated()<\/code> 。

在嘗試調試時,我將插入行更改為:

為了收集更多的調試信息。 我驚訝地發現編譯時不會出現 C2440 錯誤:

我懷疑問題可能出在我如何鏈接 Boost \/ std::experimental 上,但我嘗試了幾種不同的變體(禁用使用 boost 並使用 std::experimental 代替 polyfill),但這並沒有似乎創建了一個工作庫。 或者可能與 Debug \/ Release 或 x64 與 x86 不匹配?

任何人都可以識別此構建過程中的失誤嗎?

謝謝!

[編輯] 運行 mongo-cxx-driver 中包含的測試,包括此處用於調試目的的輸出:

我知道這是一個老問題,但我今天遇到了這個問題,所以我會在這里將我的解決方案發布給任何可能感興趣的人。 它僅在調試模式下發生,當我將 /MD 更改為 /MDd 時錯誤停止。 您可能必須重新編譯 mongocxx 以匹配您的設置。

暫無
暫無

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

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