我正在尝试编译一个使用矩阵库的.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 ++代码或正确的命令行指令吗?
谢谢,开普勒
答案 0 :(得分:0)
如果您最近自己安装了此库,则可能需要运行sudo ldconfig
以将其加载到链接器缓存中。
编辑:正如凯文所说,你没有发现链接错误。
也许这是一个名称空间问题?
using namespace NEWMAT;
答案 1 :(得分:0)
这不是一个库问题 - 它是一个编译器问题 - 它找不到Matrix的任何定义(可能在你的包含文件中,但我们无法根据给出的信息确定)
[编辑]
确定包含文件中的类是否被正确引用
[/编辑]