2010-06-15 60 views
1

我使用boost一個問題:program_options用的boost :: program_options緩衝區溢出

這個簡單的程序,從提升文件複製粘貼:

#include <boost/program_options.hpp> 

int main(int argc, char** argv) 
{ 

    namespace po = boost::program_options; 

    po::options_description desc("Allowed options"); 
    desc.add_options() 
     ("help", "produce help message") 
     ("compression", po::value<int>(), "set compression level") 
     ; 
    return 0; 
} 

失敗,出現緩衝區溢出。

我已經激活了「緩衝安全開關」,當我運行它,我得到一個「未知異常(0xc0000409)」當我跨過線desc.add_options()...

我使用Visual Studio 2005和提升1.43.0 。

順便說一句,如果我停用開關,但我覺得這樣做不舒服......除非可以在本地停用它。

那麼你有解決這個問題的辦法嗎?

編輯 我發現我被鏈接到的libboost_program_options-VC80-mt.lib這是不好的庫中的問題 。

+0

你可以加什麼版本的助推器嗎? – 2010-06-15 15:33:31

+0

我加了。它的版本是1.43.0 – 2010-06-15 15:43:28

+0

你不需要在VS中手動鏈接。 Boost使用編譯指示來鏈接。 – 2010-06-15 16:06:46

回答

0

我發現我連接到libboost_program_options-vc80-mt.lib的問題,因爲我將運行時庫更改爲Multithread DLL,所以這不是好的庫。

1

它在2010年有效。即將在2005年嘗試但意識到我沒有在該環境下編譯的1.43。