我正在尝试使用MSVS 2008在C ++中读取.mat文件,但在构建简单程序时,我收到以下错误:
1> ex3.obj:错误LNK2019:函数_main中引用的未解析的外部符号_matClose 1> ex3.obj:错误LNK2019:函数_main中引用的未解析的外部符号_matOpen
我也研究过Google,似乎编译器无法链接到使用此函数所需的库(matOpen和matClose)。我之前从未使用过外部库,但我尝试了在Google中找到的所有内容,以添加Matlab库。我做了以下事情:
工具 - >选项 - >项目和解决方案 - > VC ++目录 - >显示以下目录:include files - >然后我添加了matlab包含目录的路径 - > C:\ Program Files \ MATLAB \ extern \ include
我对库文件做了同样的事情:C:\ Program Files \ MATLAB \ extern \ lib \ win64 \ microsoft
我也为项目做了这个: 右键单击项目 - >属性 - >配置属性 - > C / C ++ - >一般 - >其他包含目录 - >并添加了“C:\ Program Files \ MATLAB \ extern \ include \ win64”
然后我在Linker做了同样的事情 - >一般 - >其他图书馆目录 - >并添加了“C:\ Program Files \ MATLAB \ extern \ lib \ win64 \ microsoft”
所以我真的不知道问题出在哪里。这是我正在尝试构建的源代码:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <mat.h>
int main(int argc, char *argv[])
{
const char *file = "mozart_part1.mat";
MATFile *pmat;
pmat = matOpen(file, "r");
if(pmat == NULL)
{
std::cout << "Error: could not open MAT-file!";
return(1);
}
matClose(pmat);
}
你能看到或猜出我犯的任何错误
答案 0 :(得分:3)
看看here。 完成这些步骤。
我认为你错过的是第7步:
7.在matlabroot \ extern \ lib \ win32 \ microsoft或matlabroot \ extern \ lib \ win64 \ microsoft下找到您正在使用的编译器的.lib文件。在Linker Input属性下,添加libmx.lib,libmex.lib和libmat.lib作为附加依赖项。
修改强>
Matlab和Visual C ++都应该是32位或64位。有两种选择:
答案 1 :(得分:0)
我解决了问题!
@Michael Litvin:你是对的!我不知道你必须将MSVS 2008转换为x64平台。由于Matlab库是作为x64二进制文件提供的,因此您必须将MSVS编译器切换为x64。我按照以下步骤执行此操作:http://software.intel.com/en-us/articles/configuring-microsoft-visual-studio-for-64-bit-applications/
谢谢你的帮助!