我想在C中使用一些matlab代码。例如,我想在我的C IDE中直接读取matlab文件。有一些非常酷的C包可以让你处理我面临的大多数问题。
但是我没有使用这些包。看起来我不能正确地#include这些包。错误看起来总是像“undefined reference to 'matOpen'”。
我使用Visual Studio代码和mingw作为Windows上的C编译器。
1.我尝试了不同的符号:
#include < mat.h>
#include "mat.h"
而且,因为我使用的是c++,#include < cmath>
不起作用,但会给出不同的错误:
未在此范围中声明“matOpen”。
1.我尝试在cmd中编译
我也试着在命令提示符下编译文件。我读到here可能有链接问题,并试图 “将-lm标志添加到gcc编译器命令中,以便在您的C代码中使用数学函数”,但没有成功。
我不是cMaven,也不是cmdMaven,可能我在正确的编译命令上犯了一些错误。上面的help使用ubuntu和c,而不是windows和c。为了成功编译,有什么不同之处我必须注意吗?
1.不同的路径
我还尝试将文件mat. h重定位到不同的位置,如项目路径或编译器路径,或者在include语句中写入mat. h的完整路径。
一个类似的(Link mat.h in a C++ file)问题是针对ubuntu的,也没有帮助我。
我的代码非常简单:
#include <iostream>
#include <mat.h>
#include <stdio.h>
using namespace std;
int main()
{
MATFile *pmat;
pmat = matOpen("test.mat","r");
return 0;
}
我收到的错误消息:
cd "c:\projects\test\" ; if ($?) { g++ test.cpp -o test } ; if ($?) { .\test }
C:\user_path\AppData\Local\Temp\ccKUxfwi.o:test.cpp:(.text+0x1c): undefined reference to `matOpen'
collect2.exe: error: ld returned 1 exit status
我将感激任何帮助。我想使用一些更多的软件包,但它可能是相同的解决方案,所有。
1条答案
按热度按时间n53p2ov01#
include<mat.h>是正确的,因为它避免了“未声明”错误。
“undefined reference”是一个链接时错误,它与#include语句无关(该消息由ld发出,而不是gcc)。
检查您是否已在项目中加入(先行编译)程式库。