关闭

调试: 解决跨进程时使用CString报错的问题, [Invalid Address specified to RtlFreeHeap]

标签: mfcdllexe扩展语言ide
3688人阅读 评论(0) 收藏 举报
分类:

起因:

  今天我封了一个类, 里面有CFileDialog的操作. 作为工程内的实现运行时,完全正常.

  为了其他MFC程序代码重用, 制作了带导出类的MFC扩展DLL. 当在另外一个exe中调用此Dll时, IDE在跨进程CString串赋值的时候报错.

 

  找了下资料, 没有说道要害处的文章. 经过实验, 发现这是mfc的一个BUG. 我的解决方法是, 如果跨进程对CString赋值操作, 需要另外写一个专门的跨进程CString赋值的函数. 变形后的CString跨进程使用如下, 经过实验, 下面的代码运行稳定正常.

 

用这种方法来解决[跨进程使用CString报错], 较为简单方便~, 在网上还没看到用这种方法解决问题的思路~.

 

为了给客户调用时写的Dll, 传递的应该都是标准的Win32内建类型, 要不调用方也没办法使用.

 

为了给同种语言调用, 可以传递非标的参数.

对于C++调用, Dll中导出类是一个好的选择.

 

对于MFC程序, 导出MFC类, 使用起来更方便. 如果客户要实现同样的功能, 在此MFC导出类Dll上再封个标准的Dll给他. 这样做,工作量比较小.

 

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    资料链接1