我正在尝试将.x文件中的1100x1100矩阵复制到C ++中 float 类型的数组变量中。我在网上看到,发现 matio 库是个不错的选择。我使用" make"安装了他们的库。在Ubuntu 12.04上(我按照他们网页上给出的方法)。 但是,我无法使用它编写代码主要是因为我是C ++的新手。我正在使用g ++来编译文件。我得到错误,例如"对Mat_Open的未知引用"等等。 我确实在网页上找到了这段代码:
#include <stdlib.h>
#include <stdio.h>
#include "matio.h"
int main(int argc,char **argv)
{
mat_t *matfp;
matvar_t *matvar;
matfp = Mat_Open(argv[1],MAT_ACC_RDONLY); //here argv[1] is "a.mat"?
if ( NULL == matfp )
{
fprintf(stderr,"Error opening MAT file %s0,argv[1]);
return EXIT_FAILURE;
}
matvar = Mat_VarReadInfo(matfp,"x"); // x is the variable we are trying to access?
if ( NULL == matvar )
{
fprintf(stderr,"Variable ’x’ not found, or error reading MAT file\n");
}
我有几个问题:
我用g++ abc.cpp -o test
编译了这个。 (后跟./test
。但由于编译过程中获得的错误,我从未解决过这个问题。
我怎样才能让它发挥作用?我使用的代码有什么错误吗?或者使用我正在使用的编译语句 - 也许我需要使用一些链接器进行编译。
谢谢。请记住,我是C ++的新手。任何建议都会有所帮助。
答案 0 :(得分:0)
1)argv [1] - 是您在程序调用后输入的第一个参数。如果您想要感受它&#34;,请使用调试器或类似代码:
#include <iostream>
for (unsigned i = 0; i < argc; ++i)
{
std::cout << argv[i] << std::endl;
}
2)是的,看着http://libmatio.sourcearchive.com/documentation/1.3.4/group__MAT_g4c8205ff25c5b688a40775fbb1840b7e.html我可以说,你会读取名字变量&#34; x&#34;。
3)&#34;未定义参考&#34;意味着您需要使用matio库构建。添加&#34; -lLibraryName&#34;到您的编译字符串。它必须建立。
为了避免许多问题,请尝试安装Code :: Blocks,它是跨平台的,如果您以前从未使用C ++,那么很容易开始使用C ++。它还支持调试器,因此您可以轻松避免许多问题。