应用在vs的ide调试环境下运行顺利,但是在bin目录直接运行exe报错的问题
生活随笔
收集整理的這篇文章主要介紹了
应用在vs的ide调试环境下运行顺利,但是在bin目录直接运行exe报错的问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在項目中需要獲取攝像頭的實時視頻,因為不想安裝第三方的安裝文件來實現,經過篩選找到了easydarwin中的libEasyPlayer。 我們的項目語言是C#,libEasyPlayer的語言是C++的,在ide調試環境下通過dllimport方法直接調用libEasyPlayer很成功,視頻順利顯示。但是在本機直接運行exe居然報錯。 網上查資料,解決的辦法有: 1、通過管理員身份打開cmd運行netsh winsocket reset命令。 結果:沒有用。 2、dll版本的問題 通過vs自帶的dumpbin命令查看dll版本,得知現有版本是32位的。 到官網去找了個64位的dll,替代之。 exe運行還是報錯,報錯信息如下: 不得已找大牛朋友求救,朋友支出編譯平臺的原因。 于是修改生成的平臺為x86,而不是any cpu。 選擇的x86,編譯運行,直接雙擊exe運行,一切正常!T_T終于順利解決了。 總結 為什么在ide下會正常運行,而exe運行報錯呢? 一位技術很牛的朋友給出結論是“ide與exe所引用的庫文件不一致所引起的!”。 沒看懂?很正常,大牛舉了個栗子: 在exe可執行文件執行時會引用相應的dll,比如這里的libEasyPlayer.dll可能就引用kernel32.dll、winmm.dll等。 它的引用順序如下: 1、在執行文件的當前目錄查找。 2、在系統目錄中查找,這里是system32. 3、在環境變量中設置的目錄去查找。 而ide是直接在它自身的debug的目錄查找相應的dll,這些dll版本與系統目錄中的版本不一致,所以導致ide下運行沒問題,而exe直接執行報錯。
轉載于:https://www.cnblogs.com/cckpliang/p/4994182.html
總結
以上是生活随笔為你收集整理的应用在vs的ide调试环境下运行顺利,但是在bin目录直接运行exe报错的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: EcmaScript对象克隆之谜
- 下一篇: margin的简单应用