C++ 检测是否根据调试MSVCRT生成.lib

C++ 检测是否根据调试MSVCRT生成.lib,c++,c,visual-c++,msvcrt,C++,C,Visual C++,Msvcrt,主题是这样的——是否有可靠的方法来检测.lib静态库(以及动态库,如果可能的话)是否是针对MSVCRT的调试版本构建的?例如,是否有任何可用于检测的导入符号? 基本上,我有一个应用程序,它使用了大量依赖项静态库,其中至少有一个需要调试msvcrt,因为生成的可执行文件需要运行时的两个版本。对于dll,如果dll依赖于MSVCRxxD.dll,我们可以使用它 它与调试运行时相链接。 有关更多信息,请参阅 例如,如果您有cygwin,您可以运行 字符串xxx.lib | grep MSVCRT 或

主题是这样的——是否有可靠的方法来检测.lib静态库(以及动态库,如果可能的话)是否是针对MSVCRT的调试版本构建的?例如,是否有任何可用于检测的导入符号?
基本上,我有一个应用程序,它使用了大量依赖项静态库,其中至少有一个需要调试msvcrt,因为生成的可执行文件需要运行时的两个版本。

对于dll,如果dll依赖于MSVCRxxD.dll,我们可以使用它 它与调试运行时相链接。 有关更多信息,请参阅

例如,如果您有cygwin,您可以运行

字符串xxx.lib | grep MSVCRT

字符串xxx.dll | grep MSVCRT


看看是否出现D版本

谢谢你的回答,你的答案是正确的,但我发现我需要更多的调查。事实上,我得到了应用程序可执行文件从调试crt导入的符号-一个与众不同的是_CrtDbgReportW。我用objdump-p获得了它们,并从导入的DLL中找到了哪些符号。但不是谁导入的-我有很多lib链接,用objdump-t逐一检查,所有lib都没有导入。知道如何找到调试CRT的wht对象/库链接吗?搞定了!您发布的链接非常有用,尤其是针对特定crt版本时包含NODEFAULTLIB组合的表:。再次非常感谢,你从我这里得到了一杯虚拟啤酒!