对Portaudio中错误的未定义引用
Undefined reference to error in Portaudio
我正在尝试使用PortAudio通过麦克风进行音频录制。但我有一堆错误-
Compiling single file...
--------
- Filename: C:UsersGummDownloadspa_stable_v190600_20161030portaudioexamplespaex_record.c
- Compiler Name: TDM-GCC 4.9.2 64-bit Debug
Processing C source file...
--------
- C Compiler: C:Program Files (x86)Dev-CppMinGW64bingcc.exe
- Command: gcc.exe "C:UsersGummDownloadspa_stable_v190600_20161030portaudioexamplespaex_record.c" -o "C:UsersGummDownloadspa_stable_v190600_20161030portaudioexamplespaex_record.exe" -g3 -I"C:Program Files (x86)Dev-CppMinGW64include" -I"C:Program Files (x86)Dev-CppMinGW64x86_64-w64-mingw32include" -I"C:Program Files (x86)Dev-CppMinGW64libgccx86_64-w64-mingw324.9.2include" -L"C:Program Files (x86)Dev-CppMinGW64lib" -L"C:Program Files (x86)Dev-CppMinGW64x86_64-w64-mingw32lib" -L"C:UsersGummDownloadspa_stable_v190600_20161030portaudioexamples" -g3
C:UsersGummAppDataLocalTempccih6neG.o: In function `main':
C:/Users/Gumm/Downloads/pa_stable_v190600_20161030/portaudio/examples/paex_record.c:224: undefined reference to `Pa_Initialize'
C:/Users/Gumm/Downloads/pa_stable_v190600_20161030/portaudio/examples/paex_record.c:227: undefined reference to `Pa_GetDefaultInputDevice'
C:/Users/Gumm/Downloads/pa_stable_v190600_20161030/portaudio/examples/paex_record.c:234: undefined reference to `Pa_GetDeviceInfo'
C:/Users/Gumm/Downloads/pa_stable_v190600_20161030/portaudio/examples/paex_record.c:238: undefined reference to `Pa_OpenStream'
C:/Users/Gumm/Downloads/pa_stable_v190600_20161030/portaudio/examples/paex_record.c:249: undefined reference to `Pa_StartStream'
C:/Users/Gumm/Downloads/pa_stable_v190600_20161030/portaudio/examples/paex_record.c:255: undefined reference to `Pa_Sleep'
C:/Users/Gumm/Downloads/pa_stable_v190600_20161030/portaudio/examples/paex_record.c:253: undefined reference to `Pa_IsStreamActive'
C:/Users/Gumm/Downloads/pa_stable_v190600_20161030/portaudio/examples/paex_record.c:260: undefined reference to `Pa_CloseStream'
C:/Users/Gumm/Downloads/pa_stable_v190600_20161030/portaudio/examples/paex_record.c:303: undefined reference to `Pa_GetDefaultOutputDevice'
C:/Users/Gumm/Downloads/pa_stable_v190600_20161030/portaudio/examples/paex_record.c:310: undefined reference to `Pa_GetDeviceInfo'
C:/Users/Gumm/Downloads/pa_stable_v190600_20161030/portaudio/examples/paex_record.c:314: undefined reference to `Pa_OpenStream'
C:/Users/Gumm/Downloads/pa_stable_v190600_20161030/portaudio/examples/paex_record.c:327: undefined reference to `Pa_StartStream'
C:/Users/Gumm/Downloads/pa_stable_v190600_20161030/portaudio/examples/paex_record.c:332: undefined reference to `Pa_Sleep'
C:/Users/Gumm/Downloads/pa_stable_v190600_20161030/portaudio/examples/paex_record.c:332: undefined reference to `Pa_IsStreamActive'
C:/Users/Gumm/Downloads/pa_stable_v190600_20161030/portaudio/examples/paex_record.c:335: undefined reference to `Pa_CloseStream'
C:/Users/Gumm/Downloads/pa_stable_v190600_20161030/portaudio/examples/paex_record.c:342: undefined reference to `Pa_Terminate'
C:/Users/Gumm/Downloads/pa_stable_v190600_20161030/portaudio/examples/paex_record.c:349: undefined reference to `Pa_GetErrorText'
collect2.exe: error: ld returned 1 exit status
Compilation results...
--------
- Errors: 1
- Warnings: 0
- Compilation Time: 0.53s
我知道这是一个链接器错误,但我无法从下载的portaudio中找到任何.lib文件。如何解决此问题?
<嘿>
看起来你正在尝试构建一个端口音频示例,而没有首先构建和/或链接portaudio库!
为窗户建造portaudio
自从你在Windows上,有两种主要的方法来构建portaudio(官方文档参考(:
-
使用Visual Studio(VS(:portaudio下载提供了一个VS项目,在编译之前(希望如此(,您必须更改一些小事情。
-
使用MinGW:在windows上构建portaudio的命令行版本。如果你还没有安装MinGW,你需要安装,但我认为这种方法比我过去尝试使用Visual Studio要容易得多。
您使用的任何一种技术都将生成一个静态.lib文件,然后您可以使用该文件链接到您的项目(即您试图编译的源文件(。
链接portaudio
Visual Studio
因此,由于您在Windows上,如果您想准备好一个安装项目,我建议您在Visual Studio中执行此操作(创建一个空的c++命令行程序,并添加paex_recort.c文件(。以下是在VS中设置静态库的快速方法。
-
引用Project中的库头(portaudio.h(属性->C/C++->常规->附加包含目录
-
参考项目属性->链接器->输入中的.lib(portaudio.lib(
有关创建和使用静态库的更多信息。
MinGW
在我看来,使用MinGW实际上要简单得多,但如果你不习惯在命令行中工作,你可能不喜欢它。
假设您的项目目录中有三个文件(为了简单起见(:
Project Folder
|paex_record.c
|portaudio.lib
|portaudio.h
那么编译命令(源(是:
cd /Project/Directory
gcc paex_record.c -lportaudio
相关文章:
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 编译时的 CImg 库返回对"__imp_SetDIBitsToDevice"的未定义引用
- 对Py_Initialize()的未定义引用
- 使用mysql c++连接器的未定义引用
- 对 Scalar ::Scalar() 的未定义引用
- 对复制 CTOR 和 CTOR 的未定义引用
- 对显式实例化的模板函数的未定义引用
- TensorRT (C++ API) 对"createNvOnnxParser_INTERNAL"的未定义引用
- 2个模板化类的非模板友元函数未定义引用错误
- 编译 libfluid 样本控制器时对"event_base_del_virtual"的未定义引用
- 获取对function_name的未定义引用
- 对 'std::thread::_M_start_thread CMake 的未定义引用进行基准测试
- 对结构方法的未定义引用
- 使用内联函数 c++ 的未定义引用
- 对 CMake 中'cudaRegisterLinkedBinary'链接错误的未定义引用?
- 对 DLOPEN 的未定义引用
- QT C++中对全局变量的未定义引用
- 快速数学导致对"__pow_finite"的未定义引用
- 对 boost::system::d etail::system_category_instance 的未定义引用,从
- OpenCV 3.4.3 中对 'cv::String::d eallocate()' 错误的未定义引用