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

时间: 2024-10-19 08:10:47

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/bash: arm-linux-gcc: command not found dirname: missing operand Try 'dirname --help' for more information. 在arm-linux-gcc确认安装无误的前提下(可以参照 https://www.

Github上LeakCanary编译报错CreateProcess error=2的解决方法

现象说明: 从github上拉下LeakCanary编译时报错 1 CreateProcess error=2, ??Õ?»µ½?¶ 原因分析: 该现象是由于Windows中Gradle调用命令未加cmd.exe /C导致Windows无法识别命令 解决方案: 定位到报错的gradle代码为leakcanary-android模块的build.gradle中的gitSha()方法,修改代码为: 1 def gitSha() { 2 return 'cmd.exe /C git rev-parse

mac 命令行里 编译 链接 出现xcrun: error: active developer&nbs

mac 命令行里 编译 链接 出现xcrun: error: active developer path mac cc 编译出现 xcrun: error: active developer path ("/Volumes/Xcode/Xcode.app/Contents/Developer") does not exist, use xcode-select to change 在命令行里输入 sudo xcode-select -switch /Applications/Xcode

编译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: cannot open shared object file: No such file or directory. 出错原因是:缺少lib32z1库 解决方法:sudo apt-get install lib32z1

linux下安装php make: *** [sapi/cli/php] 错误 1 和 [ext/fileinfo/libmagic/apprentice.lo] Error 1的解决方法

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Arial; color: #333333; background-color: #ffffff } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Arial; color: #333333; background-color: #ffffff; min-height: 16.0px } span.s1 { } make: ***

配置WebSite的IIS时遇到的问题与解决方法

1: Server Error Internet Information Services 7.5 Error Summary HTTP Error 500.19 - Internal Server Error The requested page cannot be accessed because the related configuration data for the page is invalid. Detailed Error Information Module IIS Web

Nginx常见错误与问题之解决方法技术指南

  Nginx常见错误与问题之解决方法技术指南. 安装环境: 系统环境:redhat enterprise 6.5 64bit 1.Nginx 常见启动错误 有的时候初次安装nginx的时候会报这样的错误 sbin/nginx -c conf/nginx.conf 报错内容:sbin/nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or

SQL Server附加数据库出现错误5123的正确解决方法

SQL Server附加数据库出现错误5123的正确解决方法 因为自己有一本基于SQL Server 2005的数据库教程,里边使用的示例数据库是AdventureWorks for SQL Server 2005,而我的机子上装的是SQL Server 2008,示例数据库是AdventureWorks for SQL Server 2008.起初我以为示例数据库AdventureWorks for SQL Server 2005 与AdventureWorks for SQL Server

如何在Eclipse正确安装配置PyDev插件的官方教程,以及error 问题的解决方法:

官方教程; 1 1 This manual assumes that you have already have Python and/or Jython and/or IronPython installed in your machine, as well as Eclipse. Manual topics: Installing from update site and zips uninstalling Configuring the interpreter specify the py