正在開發一個程式(程式A),整體使用qt5.9.8和vs2015進行開發,開發除錯階段一直在使用32位(VS2015)Debug版本,整個程序中錄音設備的獲取是沒有問題,但當想發布一個64位版本時(VS2015_64),這時候就無法識別音頻設備了。不知道為什么。
使用QAudioDeviceInfo info = QAudioDeviceInfo::defaultInputDevice();時,獲取不到設備,列印名字(info.deviceName();)時為空""。
呼叫QList<QAudioDeviceInfo> devices = QAudioDeviceInfo::availableDevices(QAudio::AudioInput);,獲得的設備個數為0。
現在這個整個程式用到了許多第三方庫,如果protobuf和fdkaac等,都是采用動態連接(MD)。
為了作對比,我新建了一個測驗程式(程式B),整個測驗程式就一個widget,沒有其他東西了,同時也是64位release版本,但這個時候呼叫
QAudioDeviceInfo::defaultInputDevice();和QAudioDeviceInfo::availableDevices(QAudio::AudioInput);又能夠正確地獲取到設備。
重點:
1. 程式A在32位Debug模式下,QAudioDeviceInfo::defaultInputDevice();和QAudioDeviceInfo::availableDevices(QAudio::AudioInput);是可以正常獲得設備的,但64位release和debug模式都不能正常獲得設備

2. 程式B可以在64位release或者debug模式下獲得設備。

uj5u.com熱心網友回復:
SysWow64檔案夾,是64位Windows,用來存放32位Windows系統檔案的地方https://blog.csdn.net/vXueYing/article/details/86693363
uj5u.com熱心網友回復:
補充說明,現在的情況是:只有在32位下的debug才能獲得音頻設備,其他模式(32位release或者64位)都無法獲得錄音設備。uj5u.com熱心網友回復:
更新:現在程式A在我的電腦上無論什么版本都可以獲得錄音設備了,但在別人的電腦上無法獲得錄音設備?這是為什么?dll相關的檔案都是齊全的,在別人的電腦上也沒有報錯,就是無法獲得錄音設備。程式B無論是在自己的電腦上還是別人的電腦上都可以獲得錄音設備。

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/61248.html
標籤:Qt
