关于VS2019中使用MFC,使用静态库时出现LNK2005和LNK1169时的问题

最近刚学MFC几天,前几天碰到一个问题,我自己创建的项目是基于静态库,然后就出现了一堆LNK2005和LNK1169的问题,具体如下:

严重性 代码 说明 项目 文件 行 禁止显示状态
错误 LNK2005 “protected: void __thiscall CMFCControlContainer::PreUnsubclassControl(class CWnd *)” (?PreUnsubclassControl@CMFCControlContainer@@IAEXPAVCWnd@@@Z) 已经在 afxnmcdd.lib(afxctrlcontainer2.obj) 中定义 MFCApplication2 C:\Users\哑剧。\source\repos\MFCApplication2\uafxcwd.lib(afxctrlcontainer2.obj) 1

当时也不懂啊,就疯狂百度,然后发现一个帖子说在属性中改成动态库就行了。当时试了一下,果然没问题了。
但是当快做完要生成exe的时候,发现了动态库的鸡肋,动态库生成的exe不能在没有VC的电脑上运行,即动态库生成的exe程序必须基于电脑自带的VC库才能运行,而大部分人想做的都是一个在任何电脑上都能运行的小程序,于是又改成了静态库,结果还是同样的错误。
在网上找了很久,什么改链接器设置,改C/C++设置,反正就在属性了一通乱改,发现还是不行,要么出现其它问题,要么还是老问题,后来发现了这一个答案:

解决方法很简单,打开stdafx.h文件,注释掉 #define _AFX_NO_MFC_CONTROLS_IN_DIALOGS

但是我发现,我的是VS2019啊,压根找不到这个文件,后来查了,VS2017以后,stdafx.h就已经改成了pch.h。但是打开这个文件以后发现里面啥也没有,也根本没有#define _AFX_NO_MFC_CONTROLS_IN_DIALOGS这句话,于是又开始接着百度了。

经过数个小时的努力,我找到了这篇文章:
http://blog.chinaunix.net/uid-21222282-id-1829254.html

看到了这一句:
在项目->属性->链接器->命令行->附加选项中加 /force

虽然只是其中的一句话,我实在没办法就试了试,结果就能编译了。
我知道这只是把重复定义给忽略了,我也看到过很多说的很详细的内容,但是仍然无法解决,作为一个初学者我只是要我的程序能正常运行就行了,运行会有警告,但是不会报错,在这里给大家一个解决思路。

VS2019 MFC在静态库运行时出现的LNK2005和LNK1169问题相关推荐

  1. MFC的静态库.lib、动态库.dll(包含引入库.lib)以及Unicode库示例

    以vs2012为标准.转自:http://technet.microsoft.com/zh-cn/library/w4zd66ye ,有改动. 一 MFC的静态库(.lib) MFC静态库使用下列命名 ...

  2. MFC 在静态库中使用MFC,静态多线程 兼容更多windows版本避免提示缺少很多dll,安装运行库 Visual C++ Redistributable for Visual Studio

    不管动态还是静态都有可能缺dll.最安全的是安装运行库: Download Visual C++ Redistributable for Visual Studio 2015 from Officia ...

  3. VS2019下生成静态库并调用

    Part 1:生成静态库 step1: 首先,需要创建一个空项目,然后分别在头文件里写需要的类和函数: step2: 在 项目属性 里找到 配置属性,在配置属性的 常规 里将 配置类型 修改为 静态库 ...

  4. mfc设置静态库和minidump、restart

    静态库 MFC静态库 crt静态库(/MT) /MD动态库 vs2015以后的vc版本增加UCRT支持(win10除了exe程序还有uwp程序,兼容win10系统的所有终端,包括手机) minidum ...

  5. VS在引用外库运行时显示无法解析外部符号

    VS引用外库在运行时显示无法解析外部符号 问题截图 原因 链接器无法链接到 .lib,可以查看下图位置看库是否引入成功. 解决 检查库的配置是否正确.下面列出我在引用第三方库时的配置过程和注意事项. ...

  6. 解决C++ MFC源码运行时 由于找不到MFC42D.DLL,无法继续执行代码

    大家在从一台PC上拷贝C++源代码到另一台PC上  编译时有没有遇到过这种情况 由于找不到MFC42D.DLL,无法继续执行代码.重新安装程序可能会解决此问题. 由于找不到MSVCRTD.dll,无法 ...

  7. Linux下动静态库的打包与使用C C++

    目录 前言 为什么用动静态库 动态链接与静态链接 底层优缺点 Linux下的动静态库 动静态库的对比 打包静态库 使用静态库 打包动态库 使用动态库 小结 win下打包动静态库 前言 为什么用动静态库 ...

  8. Xcode 创建.a和framework静态库(转)

    最近因为项目中的聊天SDK,需要封装成静态库,所以实践了一下创建静态库的步骤,做下记录. 库介绍 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种. iOS中的 ...

  9. Linux 下的动态库、静态库与环境变量

    最近这几天在处理集群软件的过程中,遇到各种各样的库和环境变量的问题,被虐的不清!趁此机会,整理了一下 Linux 下静态库.动态库(共享库)和环境变量的一些知识,与大家共享一下. 库的种类 Linux ...

  10. linux 中如何将文件粘贴到usr下的lib内,学会在Linux下GCC生成和使用静态库和动态库...

    一.基本概念1.1什么是库 在windows平台和linux平台下都大量存在着库. 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的平台不同(主 ...

最新文章

  1. java 写优先锁_Lock读写锁的优先度比较
  2. 自动生成Insert数据的SQL脚本
  3. 区块链去中心化的生命之源:“DPOS(委托权益证明)共识机制”
  4. oracle 自定义 聚合函数
  5. ios PNG Crush error (PNG图片错误)
  6. 嵌入式C语言基础(二)
  7. 二进制文件签名_二进制数的签名表示
  8. python end用法在固定位置换行_在Python中链接方法时,换行的样式正确
  9. python ico_Python协程asynico模块解读
  10. 莫名其妙的java.lang.NoClassDefFoundError
  11. JS获取地址栏参数的方法
  12. Bailian2764 数根(POJ NOI0113-50)【数论】
  13. matlab学习心得与体会
  14. 手机版wps支持格式
  15. 点到直线的距离公式推导
  16. win10内存满载测试软件,高手亲自解决win10内存检测工具的详尽处理步骤
  17. 重庆交通大学计算机考研资料汇总
  18. POI Excel插入行,下面的行动态移动
  19. Go + C 一款简单的贪吃蛇
  20. 1-3 5-7的c语言程序,C语言求1-1/3+1/5-1/7+...——小程序,大道理

热门文章

  1. 辞退了一位简历造假的程序员,简历美化可以,造假不可取!
  2. workbench动力学周炬_ANSYSWorkbench有限元分析实例详解(动力学)
  3. OS_windows_性能监视器资源监视器任务管理器:指标阅读与使用/关闭/调整虚拟内存/android内存调度
  4. 【avx2】VitrualBox 安装centos7 支持avx2
  5. 计算机32位好还是64位好,电脑系统选择32位好,还是64位的好呢?
  6. 基于STM32串口通信的ESP8266WiFi模块使用
  7. 【算法01】—动态规划
  8. mysql类exadata功能_EXADATA智能扫描
  9. Exadata使用EXAchk进行健康检查
  10. scratch绳子算法 少儿编程电子学会图形化编程scratch等级考试四级真题和答案解析2021-3