2010-06-15 9 views
1

J'ai un problème avec boost: program_optionsdébordement de tampon avec boost :: program_options

ce programme simple, copie-collé de la documentation booste:

#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; 
} 

échoue avec un débordement de mémoire tampon.

J'ai activé le « tampon interrupteur de sécurité », et quand je le lance-je obtenir une « exception inconnue (0xc0000409) » quand je fais un pas sur la ligne desc.add_options()...

J'utilise Visual Studio 2005 et de stimuler 1.43.0 . Par ailleurs, il fonctionne si je désactive l'interrupteur mais je ne me sens pas à l'aise de le faire ... à moins qu'il soit possible de le désactiver localement.

Alors avez-vous une solution à ce problème?

EDIT Je trouve le problème je liez contre libboost_program_options-vc80-mt.lib qui n'a pas été la bonne bibliothèque.

+0

Pouvez-vous ajouter quelle version de boost que vous utilisez? –

+0

Je l'ai ajouté. C'est la version 1.43.0 –

+0

Vous n'avez pas besoin de lier manuellement dans VS. Boost utilise les directives pragma pour lier. –

Répondre

0

J'ai trouvé le problème que je liais par rapport à libboost_program_options-vc80-mt.lib qui n'était pas la bonne bibliothèque depuis que j'ai changé la bibliothèque d'exécution en Multithread DLL.

1

Cela fonctionne en 2010. Était sur le point d'essayer en 2005, mais réalisé que je n'ai pas 1.43 compilé dans cet environnement.