供参考:我目前正在Manjaro(Arch Linux)上使用GNU g ++编译器。我想为JACK(Jack Audio Connection Kit)创建一个程序,现在我正在尝试使用他们提供的here API。我安装了Jack2,但也尝试使用Jack2-dbus。我在AUR中发现了一些名为jackcpp的东西,但这对它们都没有帮助。
要解决我的问题:我无法编译列出的example clients,显然我无法使用该API构建自己的here。我怀疑它已经坏了,但我无法想象没有人报告它所以我真的不知道该怎么做。
在我的jacktest.cpp中写道如下:
#include <iostream>
#include "jack/control.h"
int main(){
jackctl_server_t *server;
jackctl_driver_t *driver;
if (jackctl_server_start(server, driver)) {
std::cout << "Started!";
return 0;
}else{
std::cout <<"Failed!";
return 1;
};
}
基于记录的supposed函数。如果操作成功与否,尝试启动插孔服务器并返回bool。 如果我尝试编译它(使用&#39; pkg-config&#39;因为我Customize UI-Grid with Dynamic Cell Classes):
$ g++ -o jacktest `pkg-config --cflags --libs jack` jacktest.cpp
它扔了:
jacktest.cpp:8:44: error: too many arguments to function 'bool jackctl_server_start(jackctl_server_t*)'
if (jackctl_server_start(server, driver))
所以我检查了一下,确实,在我的/usr/include/jack/control.h中,它只用一个参数定义了jackctl_server_start。我不知道他们的文档是否过时,或者我是否丢失文件/有错误的文件...... 然后我尝试用一个参数
来做...
if (jackctl_server_start(server)) {
...
然后抛出:
/usr/bin/ld: /tmp/ccxm3fWC.o: undefined reference to symbol '_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4'
/usr/lib/libstdc++.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
我试图重新排列论据:
$ g++ -o jacktest `pkg-config --cflags --libs jack` jacktest.cpp
$ g++ -o jacktest jacktest.cpp `pkg-config --cflags --libs jack`
$ g++ jacktest.cpp `pkg-config --cflags --libs jack` -o jacktest
$ g++ jacktest.cpp -o jacktest `pkg-config --cflags --libs jack`
总是会抛出相同的错误...
现在真正让我觉得有些事情被破坏了:另一个jacktest_2.cpp现在包括jack.h并且不包括control.h。
#include <iostream>
#include "jack/jack.h"
int main(){
jack_client_t *client;
if (client = jack_client_new("test_client")) {
std::cout << "Running!";
return 0;
}else{
std::cout <<"Not Running!";
return 1;
};
}
我可以编译:
$ g++ -o jacktest_2 jacktest_2.cpp `pkg-config --cflags --libs jack`
尽管它让我抱怨这个功能被删除了,程序也应该做它应该做的事情!所以至少有一些是有效的吗?!
此外:
$ g++ -print-file-name=jack
/usr/lib/gcc/x86_64-pc-linux-gnu/7.2.1/../../../../lib/jack
是正常的吗? usr / lib / gcc / x86_64-pc-linux-gnu / 7.2.1中没有lib / jack
总结:我真的需要control.h,我甚至更改了control.h并包含他们的&#39;驱动程序&#39;部分从API Docs回到函数中,但这并没有让我到处都是...(未定义的引用...)我觉得我错过了一些非常简单的东西,或者那些API真的被打破了。我已经待了将近一个星期了,我无法弄明白。
答案 0 :(得分:0)
如果有人发现这件事并想知道发生了什么:我在JackAudio论坛here中发布了这个。任何人都可以阅读它,如果他/她想,但我会将这个问题标记为现在已经回答,因为它确实不是C ++或编译问题,而是杰克问题。谢谢!