未定义符号:_sf_open(OSX 上的简单音频内容)

发布于 2024-07-18 05:21:17 字数 1089 浏览 4 评论 0原文

我正在尝试进入 C++ 编程,但我在一些小细节上遇到了很大的困难。 现在,我正在尝试让下面的代码片段正常工作,显然它会编译,但不会链接。 (错误消息是本文的底部)

我正在使用 libsndfile 打开音频文件,链接器似乎找不到它的正确库文件。 这是在 OS X 10.5 上。

我从 mega-nerd.com 下载了 libsndfile 并通过常用的 configuremakesudo make install 过程安装了它。 我还有什么需要做的吗?

编辑:如果有任何问题,我的系统上安装了 macports。

这是我的代码:

#include <iostream>
#include <string>
#include <sndfile.h>
#include "stereoSplit.h"
using namespace std;

int stereoSplit(string filename)
{
    cout << filename;
    SF_INFO sfinfo;
    sfinfo.format = 0;
    SNDFILE * soundfile;
    soundfile = sf_open( filename.c_str(), SFM_READ, &sfinfo );
    return 0;
}

int main (int argc, char const *argv[])
{
    return stereoSplit("testStereo.wav");
}

这是完整的错误消息:

Undefined symbols:
  "_sf_open", referenced from:
      stereoSplit(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)in cc3hvkkk.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

I'm trying to get into C++ programming, and I'm quite struggling against the little details. Right now, I'm trying to get the snippet below to work, and apparently it will compile, but not link. (error message is a the bottom of this post)

I'm using libsndfile to open audio files, and the linker doesn't seem to find the corrent library files for it. This is on OS X 10.5.

I've downloaded libsndfile from mega-nerd.com and installed it via the ususal configure, make, sudo make install procedure. Is there anything else I need to do?

Edit: I have macports installed on my system, if that's of any concern.

Here's my code:

#include <iostream>
#include <string>
#include <sndfile.h>
#include "stereoSplit.h"
using namespace std;

int stereoSplit(string filename)
{
    cout << filename;
    SF_INFO sfinfo;
    sfinfo.format = 0;
    SNDFILE * soundfile;
    soundfile = sf_open( filename.c_str(), SFM_READ, &sfinfo );
    return 0;
}

int main (int argc, char const *argv[])
{
    return stereoSplit("testStereo.wav");
}

And here's the complete error message:

Undefined symbols:
  "_sf_open", referenced from:
      stereoSplit(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)in cc3hvkkk.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

甜警司 2024-07-25 05:21:17

您需要在库中链接。 您的编译器命令应类似于:

g++ mystuff.cpp -lsndfile

You need to link in the library. Your compiler command should look something like:

g++ mystuff.cpp -lsndfile
[浮城] 2024-07-25 05:21:17

要在 Xcode 中链接库,请选择项目目标,添加新项目以将二进制文件链接到库,然后在计算机上找到 libsndfile.1.dynlib。

To link the library in Xcode, select the project target, add a new item to Link binary with libraries, and find the libsndfile.1.dynlib on your computer.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文