在C++/CLI中include atlstr.h头文件会导致_CrtIsValidHeapPointer异常

项目配置参数IDE:VS2010+SP1配置类型:.Net 应用程序(.exe)MFC的使用:使用标准Windows库ATL的使用:不使用ATL字符集:使用Unicode字符集公共语言运行时支持:公共语言运行时支持(/clr)发现问题调用了某个Win32的标准DLL,需要传入一个LPCTSTR,所以需要将System::String^转换为LPCTSTR,最简单的方
摘要由CSDN通过智能技术生成
 

项目配置参数
IDE:VS2010+SP1
配置类型:.Net 应用程序(.exe)
MFC的使用:使用标准Windows库
ATL的使用:不使用ATL
字符集:使用Unicode字符集
公共语言运行时支持:公共语言运行时支持(/clr)

发现问题
调用了某个Win32的标准DLL,需要传入一个LPCTSTR,所以需要将System::String^转换为LPCTSTR,最简单的方法是通过CString,因为CString支持到LPCTSTR的隐式转换。代码如下:
void DoSth(String^ _para)
{
  CString temp(_para);
  DLLObj->Done(temp);
}
但为了不引用大量MFC内容,使用atlstr.h头文件,这里面有CString的定义。一旦包含了atlstr.h,则程序运行即报_CrtIsValidHeapPointer断言异常。
google、baidu、bing了个遍,也没找到可行的方案(可能是兄弟我水平有限,要是哪位朋友发现解决办法,别忘知会俺一声)。最后在微软的老窝发现一个类似的贴子,可惜不是问题贴,而是被当作Bug提交的,有兴趣的朋友可以点这里<

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值