VC里引用第三方库常遇到的链接重复定义问题

易语言 5.93静态编译报错 【代码】易语言 5.93静态编译报错。 阅读详情

Runtime
Library是个很糟糕的问题,假设你设计了一个库,这个使用的Runtime
Library是单线程库(/ML)或是单线程Debug库(/MLd),然后你在MFC项目中使用多线程库(/MD)或多线程Debug库(/
MDd)。

就会出现大量链接错误:
LIBCMT.lib(setlocal.obj) : error LNK2005: _setlocale already defined
in
MSVCRT.lib(MSVCRT.dll)
LIBCMT.lib(tolower.obj) : error LNK2005: _tolower already defined in
MSVCRT.lib(MSVCRT.dll)
LIBCMT.lib(dosmap.obj) : error LNK2005: __errno already defined in
MSVCRT.lib(MSVCRT.dll)
LIBCMT.lib(osfinfo.obj) : error LNK2005: __get_osfhandle already
defined
in MSVCRT.lib(MSVCRT.dll)
LIBCMT.lib(crt0dat.obj) : error LNK2005: _exit already defined in
MSVCRT.lib(MSVCRT.dll)
LIBCMT.lib(strftime.obj) : error LNK2005: _strftime already defined in
MSVCRT.lib(MSVCRT.dll)
LIBCMT.lib(crt0init.obj) : error LNK2005: ___xc_z already defined in
MSVCRT.lib(cinitexe.obj)
LIBCMT.lib(crt0init.obj) : error LNK2005: ___xc_a already defined in
MSVCRT.lib(cinitexe.obj)
LIBCMT.lib(crt0init.obj) : error LNK2005: ___xi_z already defined in
MSVCRT.lib(cinitexe.obj)
LIBCMT.lib(crt0init.obj) : error LNK2005: ___xi_a already defined in
MSVCRT.lib(cinitexe.obj)
LIBCMT.lib(tzset.obj) : error LNK2005: __tzset already defined in
MSVCRT.lib(MSVCRT.dll)
LIBCMT.lib(getenv.obj) : error LNK2005: _getenv already defined in
MSVCRT.lib(MSVCRT.dll)
MSVCRT.lib(MSVCRT.dll) : error LNK2005: __strdup already defined in
LIBCMT.lib(strdup.obj)
MSVCRT.lib(MSVCRT.dll) : error LNK2005: __strnicmp already defined in
LIBCMT.lib(strnicmp.obj)
MSVCRT.lib(MSVCRT.dll) : error LNK2005: __stricmp already defined in
LIBCMT.lib(stricmp.obj)
MSVCRT.lib(MSVCRT.dll) : error LNK2005: __close already defined in
LIBCMT.lib(close.obj)
LIBCMT.lib(setlocal.obj) : warning LNK4006: _setlocale already defined
in MSVCRT.lib(MSVCRT.dll); second definition ignored
LIBCMT.lib(tolower.obj) : warning LNK4006: _tolower already defined in
MSVCRT.lib(MSVCRT.dll); second definition ignored
LIBCMT.lib(dosmap.obj) : warning LNK4006: __errno already defined in
MSVCRT.lib(MSVCRT.dll); second definition ignored
LIBCMT.lib(osfinfo.obj) : warning LNK4006: __get_osfhandle already
defined in MSVCRT.lib(MSVCRT.dll); second definition ignored
LIBCMT.lib(crt0dat.obj) : warning LNK4006: _exit already defined in
MSVCRT.lib(MSVCRT.dll); second definition ignored
LIBCMT.lib(strftime.obj) : warning LNK4006: _strftime already defined
in
MSVCRT.lib(MSVCRT.dll); second definition ignored
LIBCMT.lib(crt0init.obj) : warning LNK4006: ___xc_z already defined in
MSVCRT.lib(cinitexe.obj); second definition ignored
LIBCMT.lib(crt0init.obj) : warning LNK4006: ___xc_a already defined in
MSVCRT.lib(cinitexe.obj); second definition ignored
LIBCMT.lib(crt0init.obj) : warning LNK4006: ___xi_z already defined in
MSVCRT.lib(cinitexe.obj); second definition ignored
LIBCMT.lib(crt0init.obj) : warning LNK4006: ___xi_a already defined in
MSVCRT.lib(cinitexe.obj); second definition ignored
LIBCMT.lib(tzset.obj) : warning LNK4006: __tzset already defined in
MSVCRT.lib(MSVCRT.dll); second definition ignored
LIBCMT.lib(getenv.obj) : warning LNK4006: _getenv already defined in
MSVCRT.lib(MSVCRT.dll); second definition ignored
MSVCRT.lib(MSVCRT.dll) : warning LNK4006: __strdup already defined in
LIBCMT.lib(strdup.obj); second definition ignored
MSVCRT.lib(MSVCRT.dll) : warning LNK4006: __strnicmp already defined
in
LIBCMT.lib(strnicmp.obj); second definition ignored
MSVCRT.lib(MSVCRT.dll) : warning LNK4006: __stricmp already defined in
LIBCMT.lib(stricmp.obj); second definition ignored
MSVCRT.lib(MSVCRT.dll) : warning LNK4006: __close already defined in
LIBCMT.lib(close.obj); second definition ignored
   Creating library ../Release/php4nts.lib and object
../Release/php4nts.exp
LINK : warning LNK4098: defaultlib "MSVCRT" conflicts with use of
other
libs; use /NODEFAULTLIB:library
LINK : warning LNK4098: defaultlib "LIBCMT" conflicts with use of
other
libs; use /NODEFAULTLIB:library
LINK : warning LNK4049: locally defined symbol "_pcre_free" imported
LINK : warning LNK4049: locally defined symbol "_pcre_malloc" imported
resolv.lib(res_send.obj) : error LNK2001: unresolved external symbol
_writev
LIBCMT.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
../Release/php4nts.dll : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.

这就是你所用的库所使用的链接库和项目使用的链接库不同所出现的问题。

把两个都设成
/ML(/MLd),或/MD(/MDd)。删掉旧的对象文件,重新编译就能通过。

VC调用matlab函数mclcppMlfFeval重复定义 问题背景: 用mcc -W cpplib:libname -T link:lib -v matlab_m_file.m 编译.m文件,生成vc可用的动态连接库和.h头文件,相关数据.c文件,和一个.cpp文件(m_to_cpp.cpp),该.cpp文件中.h文件提供的各个接口的实现,它包括在VC程序中应用matlab连接库时所需的初始化函数,结束时的资源回收函数,以及由.m文件生成的函数接口等 阅读详情

相关推荐

《MySQL高级篇》十四、多版本并发控制

《MySQL高级篇》十四、多版本并发控制

LXYDSF的博客 3991

Cannot redefine property: $router

路由被重复定义了,在优化项目时,index.html页面引入了vue-router.js文件, 在vue.config.js里配置config.externals = { vue: “Vue”, ‘vue-router’: ‘VueRouter’, “element-ui”: “ELEMENT” }, 就好了。

mengmengdemeng的博客 7224

从Transformer到Mamba:显著性检测领域的计算效率革命(Samba框架深度解析)

本文深入解析了Samba框架在显著性目标检测(Salient Object Detection)领域的创新应用,通过结合Mamba架构的优势,实现了计算效率的革命性提升。Samba框架采用显著性引导的Mamba模块(SGMB)和上下文感知上采样(CAU),有效解决了传统CNN和Transformer的局限性,同时在RGB-D等多模态任务中展现出卓越性能。

mmm90的博客 557

C++ 两个第三方库中的重定义

C++ 两个第三方库中的Redefine

ghhong1988的专栏 1389

经典蓝牙中的Sniff、Hold与Park模式

若主设备在Sniff Attempt窗口外发送数据,从设备无法接收,需依赖重传机制。移动时立即传输数据。:Sniff Interval=20ms,Attempt=1时隙。:传感器每2秒唤醒一次同步信标,主设备按需唤醒特定传感器采集数据。Slave进入Sniff模式:每20ms唤醒1个时隙监听数据。:设备需要短暂执行高优先级任务(如扫描其他蓝牙设备)。:无数据传输超时后,设备可能自动进入Sniff模式。:主设备通过信标唤醒从设备,或从设备主动请求退出(:平衡功耗与响应速度,适合间歇性数据传输设备。

shishuangquan111的博客 1673

sentinel——SLC数据下载、DEM数据下载拼接、精密轨道数据下载方法

Sentinel——SLC数据下载、DEM数据下载、精密轨道数据下载方法 SLC数据下载 网址:https://search.asf.alaska.edu DEM数据下载 1 手动下载 http://srtm.csi.cgiar.org/srtmdata/ 3.在SARscape中使用下载好的DEM 将下载好的DEM放在软件默认下载DEM路径下(默认路径是C:\Users<用户名&g...

u011322358的博客 2万+

VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结

Background MSDN中对于在不同的配置下Link的LIB作了说明: C Runtime Library: 开关 对应的库 版本 /MD MSVCRT.LIB 多线程DLL的Release版本 /MDd MSVCRTD.LIB 多线程DLL的Debug版本

hchenhui的专栏 461

SRAM compiler选项中 Soft Error Repair (SER)

引起的瞬时故障,可能会影响 SRAM 中存储的数据。SER 功能通过某种机制检测并修复这些错误,从而提高存储器的可靠性。在 SRAM 编译器中,

hzmscut的博客 1152

重复定义问题

今天在工作中遇到到一个AAA.obj error LNK2005 int book c?book@@3HA already defined in BBB.obj。

wzy2006的专栏 1109

从零解析特斯拉线圈:谐振变压器的核心原理与DIY实践

本文深入解析特斯拉线圈的工作原理与DIY实践,从LC振荡电路到电磁耦合,详细介绍了谐振变压器的核心原理。通过材料清单、绕制技巧和安全指南,帮助爱好者从零开始打造迷你闪电发生器,体验高压电子实验的独特魅力。

weixin_33670786的博客 490

WPF中使用TreeView封装组合控件TreeView+DataGrid

wpf的功能非常强大,很多控件都是原生的,但是要使用TreeView+DataGrid的组合,就需要我们自己去封装实现。功能如上图所示, 目前基本上把常用的样式都实现了,购买源码后,可以自行修改样式。本文源码效果如下,(搞了好几天,的确有难度,所以源码也收费,便宜,赚点辛苦费)第一种:技术的选择是TreeView(也就是本文的演示)。这2个图都是第三方控件自带的,并且都是收费使用。首先说明一下,实现上面的效果,有3种方法。本文演示的是使用TreeView的实现。第二种:技术的选择是DataGrid。

故里2130 1650

VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的

一天到晚游泳的鱼的专栏 1995

GFPS技术原理(一)-简介

GFPS(谷歌快速配对服务)利用BLE技术简化设备配对流程,相比传统方式大幅提升用户体验。首次配对时,设备广播包含型号ID和安全密钥的BLE信号,手机检测后弹出配对通知,用户点击即可完成安全连接并将设备与Google账户绑定。该技术支持跨设备同步、电量显示、找回设备等功能,后续配对更加便捷。GFPS通过BLE实现快速发现、一键配对和安全连接,结合Google后端服务提供元数据支持,已成为出海设备的认证标准。其核心优势在于简化操作步骤并增强功能性,特别适合非技术用户群体。

十多年蓝牙协议软件开发,擅长蓝牙协议分析 2061

vc调用任何第三方库的一般方法

vc调用任何第三方库的一般方法     出处:何处淬吴钩 VC程序的生成过程一般经过编译、链接、运行三个步骤,要调用第三方库(包括OpenCV),必须处理好这三个步骤中的问题: 1) 头文件的包含问题。头文件即.h文件,它给出了函数(同时包含类、对象、宏等,以下通称函数)的定义、调用方式等;必须指明头文件的位置,只有这样才能调用第三方库中的函数。如果头文件未处理好而调用相关的函数,则因语法错

歌行梅村的专栏 3107

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

[vc]关于链接错误的解决方法

有时在vc项目引入第三方库时,会导致项目编译不过,说是"error link 2005: already defined in LIBCMT.lib(xtoa.obj)“。解决方法 :在项目属性->链接器->命令行 的附加选项里添加: /force, 这样通常可以编译了。 

riag的专栏 1342

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

LNK2005错误——重复定义错误

方案一、编程中经常能遇到LNK2005错误——重复定义错误,其实LNK2005错误并不是一个很难解决的错误。弄清楚它形成的原因,就可以轻松解决它了。         造成LNK2005错误主要有以下几种情况:     1.重复定义全局变量。可能存在两种情况:    A、对于一些初学编程的程序员,有时候会以为需要使 用全局变量的地方就可以使用定义申明一下。其实这是错误的,全局变量是针对整个工程的。正

immcss的专栏 1472

VS中的链接重复问题

error LNK2005: _DllMain@12 already defined in MSVC 方案一、 编程中经常能遇到LNK2005错误——重复定义错误,其实LNK2005错误并不是一个很难解决的错误。弄清楚它形成的原因,就可以轻松解决它了。         造成LNK2005错误主要有以下几种情况:     1.重复定义全局变量。可能存在两种情况:    A、对于一

yunzaitian163的专栏 1210

转载:VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结

VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结 MSDN中对于在不同的配置下Link的LIB作了说明:C Runtime Library:开关对应的库版本/MDMSVCRT.LIB多线程DLL的Release版本/MDdMSVCRTD.LIB多线程DLL的De

gougoujiang的专栏 866
上一篇: 编译QTE时遇到的uic问题及解决过程
minddancer
博客等级 码龄26年 5粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值