2014-06-12 3 views
1

디버깅하기가 어려워서 문제가 있습니다. 내 프로그램은 수시로 사운드를 재생해야합니다 (종종 여러 사운드 파일을 동시에 겹치는 경우가 많습니다). 나는 주로 Mac에서 개발하고, Mac 빌드는 잘 작동하지만 (Qt에 포함 된 macdeployqt 유틸리티를 사용하여 패키지화), Windows 빌드는 컴파일 된 컴퓨터에서만 사운드를 재생합니다. 내가 시험해보기 위해 선적 한 모든 사람들은 아무 소리도 내지 못했다. (나는 소리 파일을 정확하게 찾는다는 것을 확인 했음에도 분명히 그렇게하지 않았다.)배포시 QSoundEffect로 사운드가 재생되지 않습니다.

(메인 화면 생성자에서 호출) 시작에

이 같은 각 파일로드 : SoundsList가 QList<QSoundEffect *>입니다

QSoundEffect *tmpSfx = new QSoundEffect(); 
QUrl pathAsURL; 
pathAsURL = pathAsURL.fromLocalFile(fileList.at(i).absoluteFilePath()); 
if (tmpSfx) 
{ 
    qDebug() << "path" << pathAsURL; 
    tmpSfx->setSource(pathAsURL); 
    tmpSfx->setLoopCount(1); 
    tmpSfx->setVolume(0.4); 
// tmpSfx->play(); 
    qDebug() << "is loaded" << tmpSfx->isLoaded(); 
    SoundsList.append(tmpSfx) 

합니다. 나는 사운드를 재생해야하는 경우

그럼, 내가 전화 : 창에

SoundsList.at(SoundIndex)->play(); 

내가 필요한 모든 Qt는 DLL의 그것과 함께 함께 zip 파일로 응용 프로그램을 배포하고 있습니다. 적어도 모든 Qt DLL은 내가 이라고 생각하면이 필요합니다.

Qt5Core.dll 
Qt5Gui.dll 
Qt5Multimedia.dll 
Qt5Network.dll 
Qt5Widgets.dll 
icudt52.dll 
icuin52.dll 
icuuc52.dll 
libgcc_s_dw2-1.dll 
libstdc++-6.dll 
libwinpthread-1.dll 
platforms\qwindows.dll 

내가 뭘 놓치고 있습니까?

빌드 할 때 사용하는 컴퓨터에서 실행하면 정상적으로 작동합니다. 같은 폴더에 DLL이없는 동일한 컴퓨터에서 실행될 때 Qt Creator에서 실행하지 않으면 실패합니다. Qt Creator에서 실행하지 않으면 이러한 DLL의 대부분에서 종속성을 찾았습니다. 다른 Windows 컴퓨터에서 실행하면 오류없이 정상적으로 실행되지만 소리 출력도 없습니다.

Qt 5.2로 작성되었으며 Creator 및 MinGW를 사용하여 작성되었습니다.

+0

아마도 누락 된 DLL과 관련이 있습니다. 이전에이 프로그램을 사용한 적은 없지만 실행 파일 폴더에 audio/qtaudio_windows.dll을 포함시켜보십시오. (Qt의 plugins 디렉토리에 존재합니다) –

답변

1

대부분 plugins \ audio \ qtaudio_windows.dll에있는 qtaudio_windows.dll이 누락되었습니다. 배포 할 때 "audio"라는 하위 폴더의 응용 프로그램 디렉토리에 있어야합니다.

0

문제는 파일을 처리하는 방법에 가장있을 것입니다. pathAsURL의 값을 설정 한 후 인쇄하여 설정 값을 확인할 수는 있지만 일반적으로 파일 경로는 컴퓨터의 해당 위치로 하드 코딩되어 있기 때문에 일반적으로 파일을 처리하는 습관이 좋지 않습니다. . 대신, 프로그램에서 사용되는 파일을 자원으로 가져 오십시오.

관련 문제