C#調(diào)用PortAudio.dll方法Pa_Initialize()失敗,返回錯誤paUnanticipatedHostError
最近寫的一個項目中,遇到一個奇葩的問題,C#調(diào)用C++庫PortAudio.dll(因為使用到了PortAudio對音頻數(shù)據(jù)進行處理),網(wǎng)上下載的demo可以常使用,莫得任何問題,BUT,當我集成到我的系統(tǒng)之后,調(diào)用PortAudio的初始化方法Pa_Initialize()總是不成功,郁悶了,和demo的代碼完全一致,點搞???
折騰了我老半天,最后懷疑是反射的問題,沒錯,反射應該背這個鍋,原因在于我的模塊是通過反射加載到系統(tǒng)中的,而我調(diào)用PortAudio.dll的代碼寫在模塊中,通過反射加載的模塊再調(diào)用PortAudio的接口就會失敗。于是我把調(diào)用PortAudio的部分單獨寫在另一個dll中(這個dll不需要反射加載),然后我需要反射的模塊通過引用dll實現(xiàn)調(diào)用,這樣就完全沒問題。
記?。悍瓷淇赡軙е乱恍┠涿畹膯栴},尤其是在于C++交互的時候。