std :: string отличается при передаче в метод - PullRequest
0 голосов
/ 11 марта 2019

Я использую внешнюю библиотеку (Qpid Proton C ++) в своем проекте Visual Studio. API включает в себя такой метод, как:

container::connect(const std::string &url) {...}

Я называю это в своем коде так:

container.connect("127.0.0.1");

но при отладке, входя в функцию библиотеки, строка интерпретируется неправильно, с размером в несколько миллионов символов и непонятным содержанием.

Что может быть причиной этого?

Ответы [ 2 ]

1 голос
/ 11 марта 2019

Вам нужно поместить точку останова внутри функции, а не на уровне объявления функции, где переменная существует, но еще не инициализирована.

0 голосов
/ 14 марта 2019

На случай, если кто-то столкнется с подобной проблемой, о которой Алан Биртлз упомянул в своем комментарии, одной из возможных причин является использование библиотеки и вашего кода с использованием разных сред выполнения C ++, и на этот раз это имело место.

В общем случае, как указано в на этой странице из документации по Visual C ++ ,

Если вы используете типы CRT (C Runtime) или STL (Standard Template Library), не передавайте их между двоичными файлами (включая DLL), которые были скомпилированы с использованием разных версий компилятора.

, это именно то, что происходило.

...