2011-07-21 17 views
0

マトリックスライブラリを使用している.cppファイルをコンパイルしようとしています。ライブラリファイルlibnewmat.aとlibnewmat.soはパス/ usr/lib64にあります。インクルードファイルは、パス/ usr /含める/ newmatであるので、私は、すなわちをコンパイルする(いくつかの方法を)試してみました:g ++でライブラリをリンクできない

g++ -I/usr/include -L/usr/lib64 -lnewmat new.cpp -o new3 

コンパイラは、ライブラリを見つけることができません。 .cppファイルの内容は次のとおりです。

#include <iostream> 
#include <newmat/newmat.h> 
#include <newmat/newmatio.h> 

using namespace std; 

int main() 
{ 
Matrix A(2,2); 
Real b[] = {1,2,3,4}; 
A << b; 

cout << A << endl; 

return 0; 
} 

コンパイラは言う:

test.cpp: In function ‘int main()’: 
test.cpp:9: error: ‘Matrix’ was not declared in this scope 
test.cpp:9: error: expected ‘;’ before ‘A’ 
test.cpp:10: error: ‘Real’ was not declared in this scope 
test.cpp:10: error: expected ‘;’ before ‘b’ 
test.cpp:11: error: ‘A’ was not declared in this scope 
test.cpp:11: error: ‘b’ was not declared in 

この範囲

あなたは正しいC++コード、または正しいコマンドライン命令を私に提供することができますか?

おかげで、あなたは最近、あなたはおそらく、リンカ・キャッシュにロードするためにこれをsudo ldconfigを実行する必要があり、このライブラリを自分でインストールした場合はケプラー

答えて

0

これは、ライブラリの問題ではありません - それはコンパイラの問題だ - それはおそらくあなたのインクルードファイルに(マトリックスのための任意の定義を見つけることができないが、我々は判断できませんそれは、与えられた情報)

[編集]
確かめるとインクルードファイルで、あなたのクラスは、正しく参照されている場合
私ははsudoのldconfigを実行して、再度試してみました

+0

は、私は名前空間のNEWMATを使用して を忘れてしまった 、ありがとうございました。 つまり、成功する前にこのライブラリを実行したOpenSuseのNetbeansでは、この名前空間を使用する必要はありませんでした。 大変ありがとうございます。 :-) ケプラー – Kepler

0

EDIT:ケビンは、あなたが取得しているリンクエラーではありません言ったように。

おそらくそれは名前空間の問題ですか?これによると using namespace NEWMAT;

http://www.robertnz.net/nm10.htm#namesp

+0

[/編集]。何も変わっていません。 ldconfigを実行する必要のある特定のフォルダがありますか? – Kepler

+1

リンカー/ローダーの問題は長いです – KevinDTimm

+0

そしてどこに問題がありますか? – Kepler

関連する問題