[英]unmanaged c++ dll called from c#, crashes when CString used in dll
您好最優秀的Stackoverflowians
使用Visual Studio 2008團隊系統,
我有一個C ++ dll(mfc靜態鏈接的常規dll),它具有簡單的功能
extern "C" __declspec(dllexport) int MyExportedFunction( )
{
AFX_MANAGE_STATE(AfxGetStaticModuleState( ))
CString tempString ;
....
}
從c#應用程序到dll的DLLImport可以正常工作,我可以從c#代碼的調試器中進入此函數。但是(是的,它來了!)在函數“ MyExportedFunction”內,如您所見,我實例化了一個CString,然后這個CString實例被擊中了整個應用程序崩潰,調試器給了我
“無法執行。進程已終止,請嘗試再次附加之前刷新進程列表”
有沒有人對我可能要解決的問題有任何建議?
問候嗡嗡聲
MFC程序定義了一個CWinApp對象實例TheApp,用於管理新對象和刪除對象。
MFC常規DLL定義了它們自己的theApp對象,而MFC擴展DLL使用了另一個模塊的“ theApp”。
我認為您的崩潰與丟失的/未初始化的“ theApp”一致。 如果是這種情況,內存分配將失敗並且CString使用內存分配。
兩種可能性:
您從.NET調用MFC擴展DLL。 (擴展DLL不提供它自己的theApp)
您調用一個常規的MFC DLL,其中theApp對象未正確初始化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.