2014年5月15日 星期四

x86 跟 64 位元 ,dll 找不到 ,或是編譯錯誤


兩個方案同時參考同一個專案時

為什麼一個 方案可以 編譯一個不行

原來我在方案的右鍵 屬性
組態屬性>組態 底下的 建置沒有打勾 所以會錯誤!!

所以他才會一值出現  某某dll 找不到,就是因為沒有建置,所以沒有DLL檔案


-----------------------------------------------
當我有一個方案 需要參考某個DLL檔案時,有兩種做法,
1:直接參考DLL 
2:是加入現有專案,然後再加入參考

這兩個的做法差異在於
第一個 不需要提供原始碼
第二個 要提供原始碼,專案編譯後,產生DLL ,然後就是參考到這個DLL

Debug 模式中  ,第二個 會比較好偵錯,因為可以進去參考的專案原始碼裡面。
而第一個 偵錯時,就只會說 你有錯沒辦法跑進去原始碼看。




 ---------------------------------------------------
延伸~~
在主機環境底下建立一台VM 

當把方案copy 進去 VM 以後,執行會出錯(編譯正常,可是跑到某段程式會出錯 )
錯誤 :無法載入組件...OOXXXOOX
(原因:  編譯的屬性指定 x86 或是  x64)  當主機為 64  vm32 就要重新編譯dll
vs 會判斷如果有dll 就不再編譯  ,所以你要清除專案,再建立一次 就可以了。


反正!  
假如出錯了!

先清除專案> 重建專案>執行

或者是 該方案點右鍵> 屬性> 組態屬性
看有哪一個是沒 打勾建置,或是 平台x86   ,x64  ,any cpu 該選什麼就選什麼。

然後!!

先清除專案> 重建專案>執行




沒有留言:

張貼留言