在Windows上检测多个链接的C运行时

时间:2009-06-07 06:39:25

标签: 64-bit msvcrt

我在Windows上工作的其中一个项目(64位)存在一些问题。该程序有时会崩溃,有时不会崩溃,我怀疑问题是与多个链接的C运行时链接。如何在Windows上检测到这个?我尝试使用depends.exe,但它没有报告CRT

1 个答案:

答案 0 :(得分:3)

您不太可能成功地静态链接多个C运行时库 - 您将遇到许多符号定义冲突,这至少会产生大量警告,只有鲁莽的工程师会忽略它们。

使用depends,我会确保使用动态分析选项来检查它们加载的动态CRTL的所有依赖项。如果没有发现任何事情,我怀疑你的问题在其他地方。

我怀疑你的问题在任何情况下都是在其他地方,因为具有C级API的DLL通常不应该依赖于CRTL中的共享状态 - 最常见的是内存分配器 - 并且应该采用用于跨API内存管理的标准化协议,例如调用者分配,被调用者使用或传入内存分配回调等。换句话说,由于正确使用内存,同一进程中的多个CRTL通常不是问题管理协议。

对于瞬态故障,我怀疑是多线程或堆损​​坏。