【发布时间】:2013-02-23 11:59:40
【问题描述】:
我正在尝试用 C++ 编写一个程序来分析声音。我想使用 libsndfile 库。我在 g++ 编译器选项中添加了一个选项 -lsndfile。但我得到了错误: WavReader.cpp:18: 对 `sf_open' 的未定义引用
如何链接库?请帮忙!
#include <cstdlib>
#include "WavReader.h"
#include <sndfile.h>
#include <iostream>
namespace SA {
WavReader::WavReader(char* fileName, SoundProcessor* soundProcessor) {
this->fileName = fileName;
this->soundProcessor = soundProcessor;
}
void WavReader::readFile() {
SNDFILE* sf = NULL;
SF_INFO info;
info.format = 0;
sf = sf_open(this->fileName, SFM_READ, &info);
}
WavReader::~WavReader() {
}
}
【问题讨论】:
-
显示你的编译命令,也许通过找出你背后的netbeans在做什么。您是否考虑过使用好的编辑器 (emacs) 编辑源代码并在终端中运行编译命令?
-
另请注意,对于最新版本的 GNU 工具链,链接器标志需要放在命令行末尾。
-
看来你是对的,它应该在命令行的末尾。我从“编译器选项”中删除了 -lsndfile 并将其放入项目属性 -> 链接器 -> 库 -> 添加选项 -> 另一个选项,它现在可以工作了! Netbeans 把它放到最后