Я передаю std :: string функции, импортированной из библиотеки boost-program-options. Функция принимает один параметр, и это постоянная ссылка на строку. Однако значение, которое получает функция, отличается от того, что я передаю. Вот минимальный код
#include "boost/program_options.hpp"
int main()
{
std::string s = "This is a string";
auto res = boost::program_options::to_internal(s);
}
А вот функция
BOOST_PROGRAM_OPTIONS_DECL std::string to_internal(const std::string& s)
{
return s;
}
Значение параметра «s» должно быть «это строка» при вызове функции, указанной выше. , но значение всегда другое. Когда я говорю что-то другое, я имею в виду длинную случайную строку. До тех пор, пока конструктор basic_string выдает исключение.
Я только предполагаю, что это имеет какое-то отношение к тому, как вызывается функция и как передаются параметры, поскольку эта функция импортируется из внешней dll.
Я следовал определению макроса BOOST_PROGRAM_OPTIONS_DECL, и это просто __declspe c (dllimport)
Дополнительная информация:
- стандарт - C ++ 14
- Используемый набор инструментов - Visual Studio 2019 v142
- Версия библиотеки Boost 1.73.0 и устанавливается с помощью vcpkg