unable to load dll(由於應用程序配置不正確,應用程序未能起動)問題解決方法

unable to load dll(由於應用程序配置不正確,應用程序未能起動)問題解決方法

已有 5970 次閱讀 2009-10-27 16:10 |個人分類:C#|系統分類:科研筆記

自己寫的一個DLL(VC),然後用C#調用,在自己的機器上運行沒有問題,放在其它機器(XP)上,就出現如標題所示的問題,換一臺2003出現新的問題:找不到指定的模塊(Exception from HRESULT:0X8007007E)。意思應該都差不多。上網搜索解決方法。

找到了這篇文章(http://hi.baidu.com/talksmiles/blog/item/6709d23423f7993e5bb5f5f2.html),上面說的很詳細,分爲一,二,三,四,這裏摘抄如下:

------摘抄------

方法一:
在C:\Program Files\Microsoft Visual Studio 8\VC\redi
st\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT 下找到了下列文件:

msvcm80d.dll
msvcp80d.dll
msvcr80d.dll
Microsoft.VC80.DebugCRT.manifest

把這幾個文件拷貝到目標機器上,與運行程序同一文件夾或放到system32下,就可以運行那個程序了。

其他release版,MFC程序什麼的都是拷redist下相應文件夾下的文件就可以了,文件夾後都有標識!

方法二:
修改編譯選項,將/MD或/MDd 改爲 /MT或/MTd,這樣就實現了對VC運行時庫的靜態鏈接,在運行時就不再需要VC的dll了。

方法三:

工程-》屬性-》配置屬性-》常規-》MFC的使用,選擇"在靜態庫中使用mfc"
這樣生成的exe文件應該就可以在其他機器上跑了。

方法四:

你的vc8安裝盤上找到再分發包vcredist_xxx.exe和你的程序捆綁安裝

------摘抄------

我覺得方法二、三比較簡單,並且有印象以前在做FFPGATHER的時候,也遇到了同樣的問題,就是按這個方法解決的問題。於是滿懷信心的一通設置,編譯鏈接,跑到2003下運行程序,發現問題依舊。

正想放棄,開始採用方法四的時候,一想自己基於OPENCV,是不是自己沒有裝OPENCV的原因,雖然我把cv, cxcore, highgui, cv100, cx100等dll和lib文件,已經放在了程序所在文件夾下。於是將OPENCV裝在了2003上,運行程序,問題依然存在。於是百思不得其解。我用Depends(VS2005,2008相應文件夾下,如C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\Bin有這個程序)進行查看(在沒有OPENCV的情況下),發現少了兩個DLL,IESHIMS.DLL及WER.DLL。於是去查這相關的文章,找到很多,按照一一嘗試,都沒能解決問題。

偶然情況下,重啓了一下電腦,再運行程序,驚喜一切正常。爲了確定,是否爲OPENCV沒有安裝的問題,將OPENCV所在文件夾改名爲OPENCV0,再次運行程序,則再次出現問題。於是確定是沒有安裝OPENCV的原因。

總結如下:

1、遇到這類問題,用方法二、三進行設置,並生成release版的程序,應該就可以了。

2、OPENCV安裝完成,由於其設置了環境變量,需要重啓機器,才能生效。

在解決這個問題過程中,搜索到其它一些有用的鏈接,表示感謝,如下:

http://www.cnblogs.com/kiddo/archive/2008/04/11/1148427.html


http://www.jschina.com.cn/gb/jschina/tech/17/userobject1ai1410564.html

http://blog.csdn.net/flyjimi/archive/2006/09/08/1194676.aspx
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章