2013-03-05 51 views
5

我真的一直在抨擊這個問題上的諺語牆。從VS2010中的模塊列表中缺少的DLL

我有一個包含C#和C++代碼項目的解決方案。

我經常調用C++的DLL,它是在從通過P /調用C#項目編制。沒問題。盡我所知,通過*.sln文件以及C++和C#文件所有必需的調試器設置都已正確設置。 注:我經常可以調試類似的P/Invoked C++代碼而不會出現問題!

當然,我想,也許,這些符號不加載 - 然而,在打開的窗口中的模塊,我發現,在其中我試圖步DLL甚至沒有上市!在我的C#程序中運行函數確實使用DLL(我得到了正確的輸出),但是在觀察模塊窗口時,DLL仍然不出現。

有沒有人知道發生了什麼?


TL;博士

我有與調試P /調用C++經驗相當數量。但是,我希望調試的DLL甚至不出現在Modules列表中(所以如果VS調試器似乎完全不知道它的存在,我顯然無法步入它)。

+0

我們如何重現您的場景? – 2013-03-05 22:12:41

+0

您是否設置了「混合模式」調試? I.e沒有列出的本機(即C++模塊)或列出的,只是不是你想要調試的那個? – 2013-03-05 22:15:12

+0

David:不幸的是,我無法輕鬆地重現該場景,因爲這是我從模塊列表中唯一一次缺少dll的時間! Matt:我設置了C++項目中的混合模式調試,並將Attach設置爲Yes。在C#項目中,C++項目被列爲依賴關係。同樣在C#項目中,選中「啓用非託管代碼調試」。問題是,當代碼被調用時,即使在調試>模塊屏幕下,也沒有列出任何C++ dll。 你們有沒有見過這個?感謝您的提示! – 2013-03-06 15:45:58

回答

8

我的猜測是,你有沒有打開調試對於非託管代碼做。轉到啓動項目的Properties-> Debug選項卡。選中「啓用非託管代碼調試」。

+0

你好,馬特!謝謝你的提示!選中啓用非託管代碼調試。 – 2013-03-06 15:46:32

+1

注意:這需要設置在實際的啓動項目或* .exe本身(現在看起來很痛苦,但回想起來似乎很明顯,儘管嘗試解決這個問題時並不那麼多),而不是特定的C#項目P /調用C++。 – 2013-03-06 19:12:15