如何将c语言程序导入mfc中,关于在MFC中添加C文件

在MFC中添加C文件,

一般的的流程是添加完成后,取消预编译选项,然后在C文件中按照C语言的方式编写就可以了;

在C++中调用C函数,extern “C” 包含函数就可以了,或者包含C文件相关的头文件就可以了;

但是今天发现了一个问题:

在C文件中通过malloc()函数创建内存空间, 在C++中,通过new创建内存空间;

然后将C的内存空间memcpy到C++的内存空间;

在debug的时候没有问题,但是在release的时候出现了问题,如下:

//c文件:

unsignd char * CreateMem()

{

......;

unsignd char * pbuf = (unsignd char *)malloc(1000);

return pbuf;

}

//C++文件

void GetMem()

{

unsignd char * pGetBuf = CreateMem();

unsignd char * pNewBuf = new unsignd char[1000];

memcpy(pNewBuf, pGetBuf, 1000);

}

//C++程序的中调用;

void testFunction()

{

GetMem(); //release模式下,执行到这里直接崩溃;debug下运行正常;

}

大概调用方式流程是上面的,因为没有找到具体原因,所以不知道问题在哪里,只是大概写了一下;

我觉得应该都可以用,但是release出错;

百度之后,有人说是 new的时候要指定空间的类型,我猜想,或许malloc也要指定类型,但是都指定了,还是错误;

没有找到更好的办法,为了解决这个问题,我只好经C文件修改为CPP文件,然后重新编译,修改相关类型转,就可以正常运行了;

目前还不清楚什么原因,又懂得,可以分析一下,写到评论里;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值