簡體   English   中英

嘗試從 Octave 的獨立程序示例中編譯示例代碼,在第一行出現段錯誤

[英]Trying to compile example code from Octave's Standalone Programs example, getting segfault on first line

我正在嘗試學習如何在我的 C++ 代碼中嵌入 Octave。 這里運行第二個示例時,代碼編譯良好,但在運行代碼時,嘗試初始化解釋器時,第一行出現分段錯誤。 我不是非常擅長 C++,但即使在查找它時我也找不到任何答案。

原始代碼有octave::feval 而不是feval,這引發了一個不同的命名空間錯誤,所以我只是擺脫了它並在包含中添加了parse.h。 我懷疑這與該問題完全相關,但這是我所做的修改。

#include <iostream>
#include <octave/oct.h>
#include <octave/octave.h>
#include <octave/parse.h>
#include <octave/interpreter.h>

int
main (void)
{
  // Create interpreter.

  octave::interpreter interpreter;

  try
    {
      int status = interpreter.execute ();

      if (status != 0)
        {
          std::cerr << "creating embedded Octave interpreter failed!"
                    << std::endl;
          return status;
        }

      octave_idx_type n = 2;
      octave_value_list in;

      for (octave_idx_type i = 0; i < n; i++)
        in(i) = octave_value (5 * (i + 2));

      octave_value_list out = feval ("gcd", in, 1);

      if (out.length () > 0)
        std::cout << "GCD of ["
                  << in(0).int_value ()
                  << ", "
                  << in(1).int_value ()
                  << "] is " << out(0).int_value ()
                  << std::endl;
      else
        std::cout << "invalid\n";
    }
  catch (const octave::exit_exception& ex)
    {
      std::cerr << "Octave interpreter exited with status = "
                << ex.exit_status () << std::endl;
    }
  catch (const octave::execution_exception&)
    {
      std::cerr << "error encountered in Octave evaluator!" << std::endl;
    }

  return 0;
}

實際輸出應該是:

GCD of [10, 15] is 5

我使用的是帶有 Octave 4.2.2 的 Linux Ubuntu 18.04

查看的文檔版本與我在計算機上安裝的版本不同。 我有 4.2,但我正在查看 4.4 文檔,它有不同的代碼用於我試圖完成的任務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM