【问题标题】:About the code on Blitz++ User guide关于 Blitz++ 用户指南上的代码
【发布时间】:2013-07-15 12:56:26
【问题描述】:

我是 blitz 库的初学者。当我尝试在 Blitz++ 用户指南中编译输入和输出数组的代码时,如下所示:

#include <blitz/array.h>
#include <fstream>

BZ_USING_NAMESPACE(blitz)

const char* filename = "io.data";

void write_arrays()
{
ofstream ofs(filename);
if (ofs.bad())
{
    cerr << "Unable to write to file: " << filename << endl;
    exit(1);
}

Array<float,3> A(3,4,5);
A = 111 + tensor::i + 10 * tensor::j + 100 * tensor::k;
ofs << A << endl;

Array<float,2> B(3,4);
B = 11 + tensor::i + 10 * tensor::j;
ofs << B << endl;

Array<float,1> C(4);
C = 1 + tensor::i;
ofs << C << endl;
}

int main()
{
write_arrays();

ifstream ifs(filename);
if (ifs.bad())
{
    cerr << "Unable to open file: " << filename << endl;
    exit(1);
}

Array<float,3> A;
Array<float,2> B;
Array<float,1> C;

ifs >> A >> B >> C;

cout << "Arrays restored from file: " << A << B << C << endl;

return 0;
}

我总是遇到以下错误:

"
readtest.cpp:(.text+0x246): undefined reference to `blitz::tensor::k'
readtest.cpp:(.text+0x26c): undefined reference to `blitz::tensor::j'
readtest.cpp:(.text+0x281): undefined reference to `blitz::tensor::i'
readtest.cpp:(.text+0x69a): undefined reference to `blitz::tensor::j'
readtest.cpp:(.text+0x6b8): undefined reference to `blitz::tensor::i'
readtest.cpp:(.text+0x981): undefined reference to `blitz::tensor::i'
"

谁能帮帮我?非常感谢!

【问题讨论】:

  • 这些是链接器错误,而不是编译错误。您可能没有在链接步骤中包含 blitz 库。你的命令行是什么?
  • 谢谢你的帮助,我的命令是“g++ -O2 -static -I/usr/local/genomics/blitz -L/usr/local/genomics/blitz/lib -lblitz -o exe_readtest readtest.cpp"
  • 尝试不使用“-static”。
  • 还是不对!不过非常感谢!

标签: c++ blitz++


【解决方案1】:

我遇到了这个问题。不要尝试使用 tensor::i 和 tensor::j,而是声明以下内容:

firstIndex i;
secondIndex j;
thirdIndex k;

然后您可以直接在代码中使用它们,例如:

A = 111 + i + 10 * j + 100 * k;

我知道他们的文档另有说明,但显然他们没有编译他们的示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-18
    • 2013-04-22
    • 2010-09-08
    • 2011-04-14
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多