VC MFC编译连接常见错误汇总_lnk2005_dllmain@12 已经在 mfcs140u.lib(dllmodul.obj) -程序员宅基地

技术标签: 语言开发  

1. 错误一

(1) 错误举例

  错误 4 error LNK2005: _DllMain@12 已经在 MSVCRTD.lib(dllmain.obj) 中定义 D:\work\codes\vad_sdk_soundrecord_ocx\vad_sdk_soundrecord_ocx\AsrControl\mfcs120ud.lib(dllmodul.obj) AsrControl

 错误 5 error LNK1169: 找到一个或多个多重定义的符号 D:\work\codes\vad_sdk_soundrecord_ocx\vad_sdk_soundrecord_ocx\bin\AsrControl.ocx 1 1 AsrControl

(2) 分析

         简单地说,就是产生错误的工程同时使用了CRT库和MFC库,并且链接顺序不对,CRT 库对 new、delete 和 DllMain 函数使用弱外部链接。MFC 库也包含 new、delete 和 DllMain 函数。这些函数要求先链接 MFC 库,然后再链接 CRT 库。

         以上错误可以看出在链接库mfcs120ud.lib的时候,发现_DllMain已经在MSVCRTD.lib中已经定义

  在“项目 -> 属性 -> 链接器 -> 命令行”栏中,输入 /verbose:lib编译参数,这样,就可以在output窗口看到链接时搜索的库的先后顺序,对于本问题,你一定可以看到类似下面的先后输出:

1>  正在搜索库
1>      正在搜索 D:\work\codes\vad_sdk_soundrecord_ocx\vad_sdk_soundrecord_ocx\bin\libusc.lib: 
1>      正在搜索 ..\gvad\gvad.lib: 
1>      正在搜索 D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib\msvcprtd.lib: 
1>      正在搜索 D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib\MSVCRTD.lib: 
1>      正在搜索 D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib\OLDNAMES.lib: 
1>      正在搜索 D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\lib\mfc120ud.lib: 
1>      正在搜索 D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\lib\mfcs120ud.lib: 

1>mfcs120ud.lib(dllmodul.obj) : error LNK2005: _DllMain@12 已经在 MSVCRTD.lib(dllmain.obj) 中定义

       通过以上依赖关系可以看出:编译器先链接MSVCRTD.lib库,后链接mfcs120ud.lib,然后链接mfcs120ud.lib的时候报错了

(3) 解决方法

      让编译器先链接mfcs120ud.lib,后链接MSVCRTD.lib即可解决

在“项目->属性->连接器->输入->附加依赖项”,追加:mfcs120ud.lib;MSVCRTD.lib;

    搞定!

再例如:

错误 135 error LNK2005: "void __cdecl operator delete[](void *)" (??_V@YAXPAX@Z) 已经在 LIBCMTD.lib(delete2.obj) 中定义 D:\work\codes\vad_sdk_soundrecord_ocx\vad_sdk_soundrecord_ocx\AsrControl\uafxcwd.lib(afxmem.obj) AsrControl

分析可知:在链接uafxcwd.lib的时候发现有内容已经在LIBCMTD.lib中定义,调整链接顺序为 uafxcwd.lib;LIBCMTD.lib; 即可

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/hsy12342611/article/details/80066843

智能推荐

树莓派安装git和下载安装WiringPi_wiringpi 如何下载-程序员宅基地

文章浏览阅读1.1k次。具体命令如下sudo apt-get update#如果之前没有安装过 git,执行下面的命令安装一下sudo apt-get install git-core#下载 wiringPigit clone https://github.com/WiringPi/WiringPi#编译 wiringPicd WiringPisudo ./build——————2021.03.250:33..._wiringpi 如何下载

RabbitMQ系列之RabbitMQ简介_rabbitmq社区-程序员宅基地

文章浏览阅读152次。RabbitMQ简介AMQPAMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。类比HTTPRabbitMQ架构及概念RabbitMQ基础架构:RabbitMQ中的相关概念:Broker:接收和分发消息的应用,RabbitMQ Server就是Message_rabbitmq社区

oracle 向上递归 向下递归查询_oracle向上递归结果带上底级递归id-程序员宅基地

文章浏览阅读9.3k次。---- 向上递归select distinct orgguid,dtb_orgguid,orgname from dtba_organization a start with orgguid = '2117bc0897e543168fd9702216165c77' connect by prior dtb_orgguid = orgguid orgguid 最小级别_oracle向上递归结果带上底级递归id

对比6款 “数据分析” 工具,学什么,一目了然!-程序员宅基地

文章浏览阅读1.2k次。“数据分析” 可谓是当今社会一个超级火爆的岗位,不论是科班的,还是非科班的,都想从事这个行业,毕竟都觉得这个行业赚钱多嘛。“数据分析” 大致可以分为业务和技术两个方向,不管你是从事哪个方向..._对比分析报告工具有哪些类型

NULL,0,`0`,`\0`,"0"区别-程序员宅基地

文章浏览阅读2.7k次。前言在C语言中,我们有时候看到NULL,有时候也看到'\0',那它们之间有什么区别呢?本质本质来说,NULL,0,'\0'都是一样的,都是值0。是的,你没有听错。它们虽然值都是0,但是含义却是不一样的。NULL虽然值是0,但是它的含义不一样,或者说它的类型不一样。NULL是指针类型,不过它是空指针,即值为0。实际上NULL通常是如下定义:#defineNULL(void*..._`0

【腾讯TMQ】基于模型的自动化测试工具——GraphWalker_tmq工具-程序员宅基地

文章浏览阅读8.9k次,点赞5次,收藏26次。一、概述GraphWalker就是一个基于测试模型的用例生成工具。它主要应用于FSM, EFSM模型。可以用来它可以直接读取FSM, EFSM图形模型、json模型、生成测试用例。二、背景知识要了解GraphWalker首先要了解MBT是什么。MBT中文名称为基于模型的测试, 基于模型的测试属于软件测试领域的一种测试方法。MBT步骤如下:首先由被测系统(SUT, system under test_tmq工具

随便推点

Linux(RadHat)基础学习—虚拟机管理-程序员宅基地

文章浏览阅读189次。1.虚拟机:虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。**学习中使用的是redhat系统的虚拟机它由两部分文件构成:(1).硬盘文件(qcow2文件):记录着操作系统。所有系统信息全在硬盘。qcow2文件(2).硬件信息文件(xml文件):丢失损坏可以再次生成。xml文件。2.redhat虚拟机的安装1.下载镜像,放到合适位置(下面将镜像我放到..._disk var

win10系统nodejs安装_win10安装node-程序员宅基地

文章浏览阅读303次。1.访问nodejs官网,下载安装包,地址如下Lhttps://nodejs.org/en/建议选择推荐的稳定版本2.双击安装3. 选择安装位置安装到后面有一个选择安装 Chocolatey的软件包管理工具,可以根据自身需要来安装4. 一直next等待安装完成目前win10中可以使用powershell来执行命令,界面相对原有的要好太多了查看是否安装你已经成功引起了我的注意node -v// v14.17.0npm -v6.14.13这样nodejs就在win10系统中安装_win10安装node

在ROS使用OpenCV的关键问题就是:ROS环境下图象格式为sensor_msgs类型而OpenCV处理的图象格式是Mat类型(opencv2).ROS提供了这两种图象格式相互转换的软件包_opencv mat data senser msg-程序员宅基地

文章浏览阅读268次。在ROS使用OpenCV的关键问题就是:ROS环境下图象格式为sensor_msgs类型而OpenCV处理的图象格式是Mat类型(opencv2).ROS提供了这两种图象格式相互转换的软件包,使得我们可以将ROS系统下读取的图象转换成OpenCV的Mat格式,再使用OpenCV进行图像处理。https://blog.csdn.net/Robogreen/article/details/50487382..._opencv mat data senser msg

vue-cli搭建项目步骤(包括项目目录说明)及基本配置_vue-cli-service build配置-程序员宅基地

文章浏览阅读705次。vue-cli搭建项目步骤(包括项目目录说明)及基本配置_vue-cli-service build配置

oracle创建scheduler,Oracle_BI_Scheduler配置及iBot开发文档-程序员宅基地

文章浏览阅读194次。1.正文1.1.配置计划表配置Schedule之前需要创建计划表,通过计划表Schedule可以获得关于Schedule Jobs的信息。这表储存一个Jobs的初始化信息,参数和计划信息。他们分别是S_NQ_ERR_MSG, S_NQ_INSTANCE, S_NQ_JOB, and S_NQ_JOB_PARAM。计划表可以创建在任意的schema中。创建这些对象的脚本被保存在%Oracle_BI_..._oracle 创建scheduler group

模拟工程师必备——tsmcN28工艺指南学习_tsmc28 lib-程序员宅基地

文章浏览阅读5k次,点赞9次,收藏50次。目录1封装package2 MOS MOSCAP FMOM High-R Inductor2.1 MOS管电容2.2 FMOM金属插指结构2.3 MOS作输入电阻High-R Rin2.4 MOS驱动和电感3 RF-MOS实例参数4 Muti-Finger设置5 NGCON的含义5.1 ngcon模型用法6 sobn/sobs/sobw/sobe使用7 flicker noise闪烁噪声简介1)沟道电阻产生的热噪声3)降低1/f噪声7.1 noise_typical/worst/best7.2 flicke_tsmc28 lib

推荐文章

热门文章

相关标签