我用C#寫了一個程序,隱式調用了三個dll,暫且叫A.dll/B.dll/C.dll吧。這三個dll都是自己寫的,使用的C++。其中B.dll中也調用了C.dll。現在的問題是在C#生成的exe中使用A.dll和C.dll都可以,但使用B.dll時卻出現了下圖的報錯。
1. 網上有說是路徑問題,我是把C#和三個dll的項目放在一個解決方案裡的,生成路徑都設置到了解決方案目錄裡的Debug目錄,所以在引用時都直接寫的dll名稱,路徑應該沒問題,因為A.dll和C.dll都可以調用。
2. 網上也有說是我調用的dll引用了其他的dll,我用depends這個工具打開exe看了一下,如下圖。首先,他沒有依賴我自己寫的這三個dll,這個很奇怪,然後提示我沒有那8個紅色的dll。我把這8個dll從網上下載了都放進exe所在的Debug文件夾下,再運行exe還是不行啊。
我看了很多網上這方面的資料,現在還是解決不了,請教大家這究竟應該怎麼解決?
找到原因了,不是常見的路徑和依賴的問題,我仔細的看了一下我的B.dll的程序,發現我定義了一個結構體的指針,還沒有給這個指針分配內存的時候就用這個指針來引用結構體內的成員了。奇怪的是編譯器竟然沒報錯,而運行中出錯竟然提示的是找不到dll。吸取教訓,看來dll本身出錯了,也會提示這個找不到dll。也多謝各位前輩的指導,csdn真是個不錯的地方。