背景:我正在构建一个大型模拟框架的插件。我正在使用Visual Studio C ++ 2010编译DLL。
经过多次bughunting和谷歌搜索后,我相信我有一个问题,因为有多个版本的CRT链接到我的DLL。我在函数tidtable.c
中的_CRTIMP PFLS_GETVALUE_FUNCTION __cdecl __set_flsgetvalue()
(来自msvcr100.dll)中遇到了段错误。阅读this线程(讨论了多个问题,但最后提到了这个函数)是我的想法,如果我检查项目的链接部分,我看到msvcr90.dll
,'msvcp100d的.dll and
msvcr100d.dll`。
我正在使用几个外部库,我已经能够使用VS2010重新编译其中的所有库。最后一个不是开源的(它是一个属于框架的库),我想这就是依赖的来源。但我不确定,我怎么能检查这个?
鉴于我对依赖的来源是正确的,我该怎么办?
答案 0 :(得分:2)
您正在从Visual Studio 2008链接到发布运行时并调试Visual Studio 2010的运行时...您通常不应混合使用发布和调试。如果您需要调试VC9,则需要安装Visual Studio 2008(在2010年之前安装才能安全)
但是我可能只是重建VC10的所有项目和依赖项。如果系统中缺少redist for VC9仅用于发布,您可以安装Dependency Walker。
编辑:{{3}}的链接,这对于确定缺失或冲突的依赖关系非常有用。