进来开发一个新功能需要使用C++和C混合编程,这其实也不难,相关方法网络上已经有详细的讲解。我遇到的问题就是编译,链接都没有问题,但在运行时出现【windows已在XX.exe中触发一个断点,其原因可能是堆被损坏,这也说明xx.exe中或它锁加载的任何dll中有bug】。其中C写的代码是一个动态链接库,这个问题就是我将C的编译选项由【使用MDd(多线程调试 DLL)】运行时库修改为【使用MTd(多线程调试)】运行时库引起的,代码没有任何修改,C++代码设置的是【使用MTd(多线程调试)】运行时库。
首先,我将C写的动态链接库运行时库设置还原之后,问题没有了。但这不是能说代码没有问题,所以还是慢慢查找原因,最后定位到是一个释放指针的地方出现的问题。大概原型是这样的:
C代码中:
char* getName()
{
return strdup("XXXXXXXXX");
}
C++代码中: