C++ 无法在线程中使用mpg123库

C++ 无法在线程中使用mpg123库,c++,audio,pthreads,mp3,C++,Audio,Pthreads,Mp3,我想用mpg123在不同的线程中播放一首mp3歌曲,并将trackid作为参数传递,以便选择正确的歌曲。我使用的代码如下 我有两个问题。有时程序不创建线程,当它创建线程时,正确的值被传递和打印,歌曲就不会播放 我还尝试将mpg123库与system()一起使用,当线程正确创建时,歌曲也会正确播放。线程中的mpg代码有问题吗?多谢各位 汇编守则时: g++-g-Wall-pthread mpg.cpp-lmpg123-lao-lpthread-o mpg #包括 #包括 #包括“pthread.h

我想用mpg123在不同的线程中播放一首mp3歌曲,并将trackid作为参数传递,以便选择正确的歌曲。我使用的代码如下

我有两个问题。有时程序不创建线程,当它创建线程时,正确的值被传递和打印,歌曲就不会播放

我还尝试将mpg123库与system()一起使用,当线程正确创建时,歌曲也会正确播放。线程中的mpg代码有问题吗?多谢各位

汇编守则时:

g++-g-Wall-pthread mpg.cpp-lmpg123-lao-lpthread-o mpg

#包括
#包括
#包括“pthread.h”
#定义位8
#包括
使用名称空间std;
int播放音频(int trakid)
{
//在此处调用时工作,包括路径
//const char*traklink=“/home/pi/downloads/00000050.mp3”;
char*traklink=“”;
int tid=trakid;
如果(tid==1){

cout在您播放完mp3文件之前,您的程序正在退出main。您需要等待退出main。您可以通过添加
pthread\u join
,等待线程退出来完成此操作

rc=pthread_create(&hThread,NULL,threading,(void *)trakid);
cout<<rc<<endl;
// don't exit until thread has finished
pthread_join(hThread, NULL);
rc=pthread\u创建(&hThread,NULL,threading,(void*)trakid);
库特
rc=pthread_create(&hThread,NULL,threading,(void *)trakid);
cout<<rc<<endl;
// don't exit until thread has finished
pthread_join(hThread, NULL);