3

我正在使用 gflags 来解析 C++ 应用程序(v140、x64)的命令行参数。出于某种原因,我在发布和调试模式下得到不同的结果。在调试模式下,不识别参数。

代码

#include <gflags/gflags.h>
DEFINE_string(str_arg, "default param value", "string value");

int main(int argc, char *argv[])
{
    std::cout << "str value before glog init: " + FLAGS_str_arg << std::endl;
    //third parameter is set to false. setting it to true doesn't solve the problem
    google::ParseCommandLineFlags(&argc, &argv, false);
    std::cout << "str value after glog init: " + FLAGS_str_arg << std::endl;
}

执行命令

app.exe -str_arg new_val

释放模式下的输出

str value before glog init: default param value
str value after glog init: new_val

调试模式下的输出

str value before glog init: default param value
str value after glog init: default param value
4

1 回答 1

0

我有同样的问题,在调试模式下字符串没有出现。为了解决这个问题,我必须编译 gflags 发布和调试库。在install/bin目录中现在有:

  • gflags.dll
  • gflags_debug.dll
于 2021-11-30T15:25:27.973 回答