VS编译链接时错误(Error Link2005)的解决方法
近期参与的项目中使用了公司另外一个同事提供的一个静态库文件。该静态库文件集成了CUDA, OpenCL两个库,用于做图形加速计算,提高视频解码拼接速度。但是在编译链接项目时,VS爆出如下错误:
1>LIBCMTD.lib(crt0init.obj) : error LNK2005: __xi_a 已经在 MSVCRT.lib(cinitexe.obj) 中定义
1>LIBCMTD.lib(crt0init.obj) : error LNK2005: __xi_z 已经在 MSVCRT.lib(cinitexe.obj) 中定义
1>LIBCMTD.lib(crt0init.obj) : error LNK2005: __xc_a 已经在 MSVCRT.lib(cinitexe.obj) 中定义
1>LIBCMTD.lib(crt0init.obj) : error LNK2005: __xc_z 已经在 MSVCRT.lib(cinitexe.obj) 中定义
编译阶段并没有出现错误,根据VS输出判断是符号重定义。但是,如上提示中的符号“__xi_a”等并没有出现在源代码中。因此判断可能是库的版本不对。查看一下工程的属性配置,右键选择工程->属性->C/C++->代码生成->运行库:

可以看到主工程使用了“多线程DLL(/MD)”版本的运行库,而同时开发静态库时使用了“多线程调试(/MTd)”的配置:

显然在编译链接的时候会产生错误,导致无法正常生成可执行程序。将静态库工程和主工程的运行时库的版本设置为一致的就可以解决问题了。另外,网上还提供了一种新的方法来查看工程链接的具体静态库路径:在“属性->链接器->常规->显示进度”中进行选择。

参考链接
1. http://stackoverflow.com/questions/5249431/linker-trouble-how-to-determine-where-a-defaultlib-is-coming-from/16899011#16899011
2. http://stackoverflow.com/questions/20918729/what-is-causing-vs2013-error-lnk2005-xi-a-already-defined-in-msvcrt-libcinit
3. http://stackoverflow.com/questions/2728649/error-lnk2005-xxx-already-defined-in-msvcrt-libmsvcr100-dllc-something-libc
VS编译链接时错误(Error Link2005)的解决方法的更多相关文章
- 编译U-Boot时command not found的解决方法
我使用的U-Boot版本是u-boot-2012.10,编译的步骤为 cd u-boot-2012.10 make s5p_goni_config sudo make 然后,就会看到错误提示 /bin ...
- Github上LeakCanary编译报错CreateProcess error=2的解决方法
现象说明: 从github上拉下LeakCanary编译时报错 CreateProcess error=2, ϵͳÕҲ»µ½ָ¶ 原因分析: 该现象是由于Windows中Gradle调用命令未加cmd ...
- 安装MySQL最后一步出现错误Error Nr.1045解决方法
转自:https://blog.csdn.net/gsls200808/article/details/46846019 安装MySQL最后一步出现错误Error Nr.1045 Connection ...
- window环境下的oracle错误error: 0x7e的解决方法
今天连接一个Win2008 Server服务端上的一个oracle出现了下面的这些错误 LoadLibraryFromPath: FQ Dll C:\Windows\system\oci.dll is ...
- Flash调用Alchemy编译的代码时出现Error #1506的解决
Flash调用Alchemy编译的代码时出现Error #1506的解决这个问题困扰了我很久,因为需要频繁的向Alchemy代码中传递大ByteArray数组.当某次传递的数据量较大时,后面再调用时就 ...
- 编译Uboot时提示error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
在Ubuntu14.04 64位系统中已经安装了libc6:i386的库,编译Uboot时提示error while loading shared libraries: libz.so.1: cann ...
- qt 旧项目编译运行提示 “启动程序失败,路径或者权限错误?” 原因及解决方法
qt 旧项目编译运行提示 "启动程序失败,路径或者权限错误?" 原因及解决方法 原因 Qt Creator在打开项目文件的同时会生成.pro.user文件,.pro.user文件叫 ...
- LoadRunner出现error问题及解决方法总结
一.Step download timeout (120 seconds) 这是一个经常会遇到的问题,解决得办法走以下步骤:1. 修改run time setting中的请求超时时间,增加到600 ...
- Nginx常见错误与问题之解决方法技术指南
Nginx常见错误与问题之解决方法技术指南. 安装环境: 系统环境:redhat enterprise 6.5 64bit 1.Nginx 常见启动错误 有的时候初次安装nginx的时候会报这样的 ...
随机推荐
- Ring0打开其他设备对象三种方式整理
1.通过ZwCreateFile打开其他设备的Handle,此函数只能得到句柄.ZwCreateFile与NtCreateFile区别在于NtCreateFile更加底层,ZwCreateFile是基 ...
- Android ANR 分析解决方法
一:什么是ANR ANR:Application Not Responding,即应用无响应 二:ANR的类型 ANR一般有三种类型: 1. KeyDispatchTimeout(5 seconds) ...
- ES7之Decorators实现AOP示例
在上篇博文CoffeeScript实现Python装潢器中,笔者利用CoffeeScript支持的高阶函数,以及方法调用可省略括符的特性,实现了一个类似Python装潢器的日志Demo.这只是一种伪实 ...
- 再看Ajax
再回顾Ajax相关的内容,再次梳理学习还是很有必要的,尤其是实际的开发中,ajax更是必不可少,仔细学习以便避免不必要的错误. 文章导读: --1.使用XMLHttpRequest---------- ...
- JSON与XML的区别比较
1.定义介绍 (1).XML定义扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许 ...
- dofile执行ANDROID APK里面的文件
我使用dofile执行APK文件是不行的,比如 dofile("assets/res/flist")只能先拷贝到writablePath然后再dofile拿到数据后再清除这个临时文 ...
- Opengl中矩阵和perspective/ortho的相互转换
Opengl中矩阵和perspective/ortho的相互转换 定义矩阵 Opengl变换需要用四维矩阵.我们来定义这样的矩阵. +BIT祝威+悄悄在此留下版了个权的信息说: 四维向量 首先,我们定 ...
- 如何用TDR来测试PCB板的线路阻抗
隔壁小王已经讲了TDR的原理以及如何确定TDR的分辨率.那么,我们要正确测量PCB板上的线路阻抗,还有哪些需要注意的地方呢? 1. 阻抗测试的行业标准 之前贴过好多张阻抗测试的图片,重新再贴一张给大家 ...
- TDR测试原理
什么是TDR? TDR是英文Time Domain Reflectometry 的缩写,中文名叫时域反射计,是测量传输线特性阻抗的主要工具.TDR主要由三部分构成:快沿信号发生器,采样示波器和探头系统 ...
- jquery做一些小的特效
在文本框里输入内容到添加到下拉列表里,移除下拉里的内容 1 <!DOCTYPE html> <html> <head> <meta charset=" ...