【问题标题】:How to link libs in netbeans (linux)?如何在netbeans(linux)中链接库?
【发布时间】: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 把它放到最后

标签: c++ netbeans g++


【解决方案1】:

项目属性->链接器->库->添加选项->另一个选项:-lsndfile

【讨论】:

    【解决方案2】:

    您需要链接 -lsndfile 库...确保包含库路径,以便它从正确的位置找到库...检查 /usr/lib/ 以确保它存在于您的系统上,或添加路径您的库的正确位置...

    【讨论】:

      猜你喜欢
      • 2013-06-16
      • 2010-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多