未定义的参考`PaUtil_GetRingBufferReadAvailable'使用Eclipse

时间:2016-06-29 14:59:18

标签: linux eclipse ubuntu compilation portaudio

我需要在Ubuntu 12.04.5 LTS上使用Eclipse和CDT编译PortAudio&#39的 paex_record_file.c 文件。

通过Synaptic安装了Dev libraries(libportaudio-dev)。 我创建了新的Eclipse项目并创建(复制)此 only 文件(因此项目只包含一个用户源文件' paex_record_file.c',1752 2011-09-08 03: 21时55分)。

然后我使用Eclipse的Pkg-config添加' portaudio' (开发)图书馆。 但它没有编译错误

../src/paex_record_file-test.c:47:27: fatal error: pa_ringbuffer.h: No such file or directory

然后从git

取得源分支
$ git clone https://git.assembla.com/portaudio.git
./configure
make
sudo male install

但仍然得到同样的错误(没有' pa_ringbuffer.h')。

然后在盲目试验和错误期间我使用Project - Properties - C build - Settings - Tool settings - Includes,并添加' / home / test / portaudio / src / common'包含所需.h文件的路径,并且(此)错误消失。

问题1 :在这种情况下,此步骤是否正确使用Eclipse设置? (我不相信,因为我以前从不需要使用设置。)

但是它显示了多个错误,如

/home/doc/prog/paex_record_file-test/Debug/../src/paex_record_file-test.c:110: undefined reference to `PaUtil_GetRingBufferReadAvailable'

这是不可恢复的。

问题2。如何使用Eclipse修复它,但不将所有Portaudio源代码树复制到我的项目中?

我在系统的某个地方有 pa_ringbuffer.o 文件,但没有像pa_ringbuffer.so这样的文件。 我已经在Eclipse下编译并运行其他PA应用程序,这些应用程序不使用PA的环形缓冲区,只是

#include "portaudio.h"

通过PkgConfig添加PA lib就足够了。 感谢。

2 个答案:

答案 0 :(得分:1)

我必须将这3个文件添加到源代码以及main.c,然后编译。 我使用Code Block,Mingw c编译器

/portaudio/src/common/pa_allocation.c

/portaudio/src/common/pa_ringbuffer.c

/portaudio/src/os/win/pa_win_util.c

code block IDE view of 3 files added

答案 1 :(得分:0)

请查看portaudio.git:

cd portaudio/
find . -name pa_ringbuffer.h
The reply is : ./src/common/pa_ringbuffer.h

...所以你必须将标题复制到可以找到它的位置。 但是:不要期望编译单个文件→通常无法使用复杂的应用程序。即该设置用于编译完整的portaudio /。