多个CRT给出segfault
Multiple CRTs giving segfault
背景:我正在为一个大型模拟框架构建一个插件。我正在使用Visual Studio C++2010编译一个DLL。
经过大量的错误搜索和谷歌搜索,我相信我遇到了一个问题,这个问题源于有多个版本的CRT链接到我的DLL。我在函数_CRTIMP PFLS_GETVALUE_FUNCTION __cdecl __set_flsgetvalue()
中的tidtable.c
(来自msvcr100.dll)中得到一个segfault。阅读这个线程(讨论了多个问题,但最后提到了这个函数)是我得到这个想法的地方,如果我检查我的项目的链接部分,我会看到msvcr90.dll
,´msvcp100d.dll and
msvcr100d.dll`。
我使用了几个外部库,并且能够使用VS2010重新编译除一个外的所有库。然而,最后一个不是开源的(它是属于框架的库),我想这就是依赖关系的来源。但是我不确定,我该怎么检查呢?
既然我对依赖的来源是正确的,我该怎么办?
您正在链接到Visual Studio 2008的发布运行时和Visual Studio 2010的调试运行时。。。一般情况下,您不应该混合使用发布和调试。如果你需要调试VC9,你需要安装Visual Studio 2008(为了安全起见,在2010年之前安装)
然而,我可能只是针对VC10重新构建所有项目和依赖关系。如果您的系统中缺少仅用于发布的redist,则可以安装用于VC9的redist。
编辑:链接到依赖项Walker,它对于确定缺失或冲突的依赖项非常宝贵。
相关文章:
- C++程序在循环后给出奇怪的int值
- 为什么tellp()给出-1
- c++17文件系统::recursive_directory迭代器()在mac上没有给出这样的目录,但在windows上
- muQueue.front() 给出了 const 实例,即使我没有将其标记为 const
- 当我在第一个循环中使用"auto"时,它工作正常,但是使用"int"它会给出错误,为什么?
- 你好。。。id_public变量不应该给出结果为 81 和 86 吗?为什么它为两个派生类占用不同的内存位置?
- 检查是否以特定精度给出双精度
- 遍历顺序由 std::文件系统directory_iterator给出
- 使用 boost 进行标记化会给出相同的输出
- 捕获标准输出以压缩并使用 CTRL-C 中断会给出损坏的 zip 文件
- 为什么 vector 的随机访问迭代器给出与指针不同的内存地址?
- 为什么代码给出分段错误?
- 将常量字符串添加到非常量字符串是否会给出常量字符串
- 如何从递归函数中完全返回,该函数给出了每个函数结果的累积相加?
- 特征 LLT 模块给出不正确的结果?
- 迭代器:如果 '*' 返回元素的引用,为什么删除 *(myList.end()) 会给出 SegFault
- LLVM IR,简单的程序给出segfault
- C++:链接库在执行过程中消失并给出segfault
- 多个CRT给出segfault
- 使用矢量的dfs实现给出了segfault