用g ++链接库不起作用

时间:2011-07-21 20:28:09

标签: linker g++

我正在尝试编译一个使用矩阵库的.cpp文件。库文件libnewmat.a和libnewmat.so位于路径/ usr / lib64中。包含文件位于路径/ usr / include / newmat中,所以我尝试(几种方式)进行编译,即:

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 ++代码或正确的命令行指令吗?

谢谢,开普勒

2 个答案:

答案 0 :(得分:0)

如果您最近自己安装了此库,则可能需要运行sudo ldconfig以将其加载到链接器缓存中。

编辑:正如凯文所说,你没有发现链接错误。

也许这是一个名称空间问题? using namespace NEWMAT;

根据这个:http://www.robertnz.net/nm10.htm#namesp

答案 1 :(得分:0)

这不是一个库问题 - 它是一个编译器问题 - 它找不到Matrix的任何定义(可能在你的包含文件中,但我们无法根据给出的信息确定)

[编辑]
确定包含文件中的类是否被正确引用 [/编辑]