簡體   English   中英

從c#調用的非托管c ++ dll在dll中使用CString時崩潰

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM