1

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

4

1 回答 1

3

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

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

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

对于暂时性故障,我怀疑是多线程或堆损​​坏。

于 2009-06-07T07:46:38.780 回答