首先,我发现了较小的示例paex_record.c
。
我在Windows8上使用MinGW,并且从源代码编译了portaudio,我从中获得了使用过的libportaudio-2.dll
。
我在QtCreator(没有gui)中设置了一个带有以下.pro文件的项目:
TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt
SOURCES += main.cpp
LIBS += -LC:/Audio/patest/paex_record_file -llibportaudio-2
我的文件夹C:/Audio/patest/paex_record_file
如下:
libportaudio-2.dll
main.cpp
pa_ringbuffer.c
pa_ringbuffer.h
pa_util.h
paex_record_file.pro
paex_record_file.pro.user
portaudio.h
我找不到pa_ringbuffer
和pa_util
这个文件夹。
Main.cpp
包含来自portaudio源的整个示例文件paex_record_file.c
。
调用ringbuffer时出错(第246行和第271行:source):
"min" was not declared in this scope
我认为这个示例会像record.c
示例一样直接运行。
我是否需要包含更多包裹?我已尝试algorithm
,math
,std
和using namespace std
,但仍会发生错误。但我觉得它应该在盒子外工作,也许我的包含文件或文件夹设置/链接不正常?
undefined reference to "PaUtil_GetRingBufferReadAvailable"
还有一些这样的。可能有一个lib缺失了,看看......
答案 0 :(得分:1)
我尝试编译IEnumerable<T>
时也遇到此链接错误。事实证明,在编译主文件之前需要编译IQueryable<T>
。还有一些外部依赖于某些alloc函数,因此您需要在文件中更改2行。
我不精通qt,但你需要做类似的事情:
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
$scope.books = [
{ title: 'Sample Title' },
{ title: 'Sample Title 2' },
{ title: 'Sample Title 3' },
{ title: 'Sample Title 4' }
];
$scope.markFavorite = function(book) {
book.isFavorite = true;
};
$scope.unmarkFavorite = function(book) {
book.isFavorite = false;
};
});
以下是我使用MinGW编译的方法:
paex_record_file.c内的更改
<body ng-controller="MainCtrl">
<p>All books</p>
<ul>
<li ng-repeat="book in books"><button ng-click="markFavorite(book)">{{book.title}}</button></li>
</ul>
<p>Favorite books</p>
<ul>
<li ng-repeat="book in books | filter:{isFavorite:true}"><button ng-click="unmarkFavorite(book)">{{book.title}}</button></li>
</ul>
</body>
使用MinGW编译:
paex_record_file.c
我没有得到min问题,但也许你可以尝试删除pa_ringbuffer.c
后卫并尝试重新编译。
SOURCES += pa_ringbuffer.c main.cpp
到
Line 313 : data.ringBufferData = (SAMPLE *) malloc( numBytes );
Line 443 : free( data.ringBufferData );