release版本程序調用libvlc接口出現異常 .

release版本程序調用libvlc接口出現異常

super.raymond.lu[at]gmail[dot]com

(轉載請註明出處http://blog.csdn.net/raymond_lu_rl/article/details/7515900)


今天使用vlclib來讀取視頻文件,發現程序在debug模式下運行時正常,但是換成release模式編譯就會出現問題。


http://forum.videolan.orghttp://stackoverflow.com/查了一下,發現不少人碰到這個問題。但是都沒有比較好的解決的辦法。


下面是回答得比較好的帖子:

http://forum.videolan.org/viewtopic.php?f=32&t=97146

1、有的說是函數調用約定的問題。

2、有的說是因爲開了/OPT:REF 選項的問題,需要換成/OPT:NOREF選項。


雖然在VS2008下把Project->Linker->Optimization->References鏈接選項換成/OPT:NOREF,重新編譯後可以正常運行。單是總覺得該編譯選項的方式心裏不踏實,總怕後面用到什麼其它庫後會有衝突。更加重要的是我在QT開發環境中找不到/OPT:NOREF選項,這樣的話就無法使用Release版本發行調用libvlc的QT程序。


於是尋找其它的辦法解決問題。


偶然的情況下,我用dumpbin 和lib命令生成的libvlc.lib文件重新構建release程序,發現竟然可以運行了。具體的方法如下:

http://wiki.videolan.org/GenerateLibFromDll

之前使用的lib文件是從vlc\sdk\lib烤過來的,和這個生成的lib竟然有這個區別。


使用重新生成的libvlc.lib分別在VS2008和QT上構建程序,一切正常:-)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章