2013-07-17 4 views
0

나는 블리츠 라이브러리의 초보자입니다. 나는 다음과 전격 ++ 사용 설명서에 입력 및 출력 배열에 대한 코드를 컴파일 할 때 :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' 
" 

이 사람이 나를 도울 수 있습니까? 고마워요!

+0

이들은 링커 오류이며 컴파일 오류가 아닙니다. 링크 단계에서 블리치 라이브러리를 포함하지 않을 가능성이 있습니다. 당신의 커맨드 라인은 무엇입니까? –

+0

도움을 주셔서 감사합니다. 내 명령은 입니다. "g ++ -O2 -static -I/usr/local/genomics/blitz -L/usr/local/genomics/blitz/lib -lblitz -o exe_readtest readtest.cpp" – user2380245

+0

시도해보십시오. "정적"없이 – Sven

답변

0

나는이 문제가 아주 많았습니다. 나는 그들의 문서라고 알고

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

:

firstIndex i; 
secondIndex j; 
thirdIndex k; 

당신은 다음처럼 직접 코드에서 사용할 수 있습니다 대신 i와 텐서 :: j는, 다음과 같은 선언 :: 텐서를 사용하려고의 그렇지 않으면 분명히 그들은 그들의 모범을 보지 못했다.