2

我是新來的C++在Visual Studio中。從C++應用程序調試一個動態加載的C++/CLI DLL

我開發出一種帶有VS溶液:

  • 一個C++/CLI DLL項目(A)
  • 一個C++控制檯項目(B),它動態地加載A,使用LoadLibraryW

當我運行BI需要在A內進行調試。但A代碼中的斷點不起作用,它們有一個警告標誌符號,表示無法在此處打破。

我已經嘗試了許多設置,但沒有任何工作。這不是一件容易的事嗎?謝謝!

+0

項目>屬性>調試>調試器類型=混合。和工具>選項>調試>常規,勾選類似於「管理兼容模式」的那個。 LoadLibrary不會奇蹟般地啓用託管代碼,CLR需要先加載並初始化。使用COM或自定義CLR託管。或者如果你確實真的必須使用__declspec(dllexport)入口點。你不需要,例外很難處理。 –

+0

@HansPassant這不是你第一次救我! :) 非常感謝你。將Debugger Type設置爲Mixed解決了它。 「使用託管兼容模式」已被選中。您能否將您的評論發佈爲答案,我可以接受嗎?無論如何,我使用__declspec(dllexport),否則我不能GetProcAddress我的DLL方法...我不知道其他方式... – bluish

+0

@HansPassant好吧,我會發布它...無論如何,我不明白有人給我的downvote – bluish

回答

3

由於@HansPassant,解決的辦法是設置該屬性:

  • 項目>屬性>調試>調試器類型=混合
  • 工具>選項>調試>常規,勾選「使用管理兼容模式」。

LoadLibrary不會奇蹟般地啓用託管代碼,CLR需要先加載並初始化。

相關問題