VS2008 Debug Error R6034

本文记录了从VC6.0迁移至VS2008时遇到的编译错误及解决方案。作者尝试了网上的多种建议,最终发现是由于DLL引起的错误,并分享了具体的修改步骤。

VC6.0老工程升级到VS2008进行编译碰到以下错误,


网上有一些解决办法,可能不适用我的情况,一些链接,都是在说一些manifest导致的。

http://hi.baidu.com/outofthinking/item/ebb9d1e4e0b6e8b52f140b9d

http://bbs.youkuaiyun.com/topics/310265755

也有说VS配置导致的,

http://blog.youkuaiyun.com/boomingzhenhua/article/details/4038171

针对我的情况做了以下改动。




应该是DLL导致的。不一定适用其它情况。

在使用 R 语言进行生物信息学分析时,用户可能在调用某些依赖多线程处理的函数(如 `rma()` 函数用于 Affymetrix 芯片数据归一化)过程中遇到如下错误: ``` Error in rma(affy_batch) : ERROR; return code from pthread_create() is 22 ``` 该错误代码 `pthread_create()` 返回值为 22,通常对应的是操作系统层面的 **EINVAL** 错误,表示传递给 `pthread_create()` 的参数无效。尽管该函数通常由底层库自动调用,但在某些情况下,系统资源限制、库版本冲突或线程支持问题可能导致此错误。 ### 可能原因及解决办法 1. **系统线程资源耗尽或配置不当** - 操作系统的最大线程数限制可能已被达到。可以通过检查 `/proc/sys/kernel/threads-max` 和当前运行的线程数 `/proc/loadavg` 或使用 `top` 命令查看。 - 用户可以尝试调整内核参数以允许更多线程: ```bash sysctl -w kernel.threads-max=新的数值 ``` 此外,确保没有过多进程正在运行,尤其是多线程密集型任务。 2. **R 或相关包的线程使用冲突** - 某些 R 包在并行执行时会显式或隐式地创建线程。如果这些线程库与系统库不兼容,可能会导致 `pthread_create()` 失败。 - 尝试禁用多线程操作,例如设置环境变量控制 OpenMP 行为: ```bash export OMP_NUM_THREADS=1 ``` 这样可以强制程序使用单线程运行,避免线程创建失败的问题[^1]。 3. **R 版本或底层 BLAS/LAPACK 库的问题** - 如果 R 使用了多线程优化的数学库(如 OpenBLAS),它们可能在某些平台上与默认线程调度策略冲突。 - 可尝试切换到串行版本的 BLAS(如 `libopenblas-base` 替换为 `libblas3`)或通过修改 `/etc/R/Makeconf` 文件中的 `MAIN_LDFLAGS` 设置来限制线程数。 - 在 Linux 上,也可以使用以下命令查看当前 R 使用的 BLAS 实现: ```bash R CMD ldd R_HOME/bin/exec/R | grep blas ``` 4. **更新或重新安装相关软件包和依赖** - 确保所有涉及的 R 包(如 `affy`, `BiocParallel`)以及 Bioconductor 工具均为最新版本。 - 更新整个 R 环境至最新稳定版本,因为旧版本可能存在已知的线程管理缺陷。 5. **硬件或虚拟机/容器环境限制** - 如果在 Docker 容器、虚拟机或云环境中运行,可能由于隔离机制限制了线程创建。 - 检查容器运行时(如 Docker)是否设置了 CPU 或内存限制,这可能间接影响线程创建。 - 在容器中尝试增加 `--ulimit nproc` 参数以提升线程上限。 6. **编译器和运行时库不兼容** - 若 R 或其依赖库是自行编译安装的,需确认所使用的编译器和链接库与运行环境一致。 - 重新编译 R 并启用调试选项有助于定位问题根源。 --- ### 示例:临时禁用多线程以测试是否缓解问题 ```r # 在 R 中设置环境变量以限制线程数 Sys.setenv("OMP_NUM_THREADS" = "1") Sys.setenv("MKL_NUM_THREADS" = "1") # 如果使用 Intel MKL Sys.setenv("OPENBLAS_NUM_THREADS" = "1") # 再次尝试执行 rma() library(affy) data <- ReadAffy() eset <- rma(data) ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值