如何在 C++ [库模式] 中抑制 LibSVM 的输出

How to suppress output of LibSVM in C++ [library mode]

当从命令行执行 LibSVM 时,我可以给 -q 作为参数,一切都会好的。但是,当我将它用作库时,没有 -q 参数可以通过编程方式设置。那我怎样才能抑制输出呢? Java 和 python 中存在解决方案,但 C++ 中没有。

LibSVM 也作为源代码分发。您可以删除所有不需要的 fprintf 或将输出函数指针信息设置为 0

static int (*info)(const char *fmt,...) = 0;//&printf;

并重新构建它:

nmake -f Makefile.win lib

您可以使用他们在 svm_train.c.

中使用的相同技巧
  • 首先定义一个什么都不做的函数:

    void print_null(const char *s) {}
    
  • 然后调用设置打印的函数:

    svm_set_print_string_function(&print_null);
    
svm_set_print_string_function([](auto c) {});