MFC封装功能动态库所遇问题汇总

  • 从库的创建到调用过程
    • 无法定义 dllimport 实体 Password
    • 调用动态库显示动态库窗体得到句柄为空且无法显示窗体
    • 头停止点不能位于宏或 #if 块中
    • fcs140ud.lib(dllmodul.obj) : error LNK2005: _DllMain@12 已经在 dllmain.obj 中定义/找到一个或多个多重定义的符号

从库的创建到调用过程

基本的创建过程可以从很多地方查询得到,这里主要记录在VS2017 Debug X86开发过程中发生的各种异常问题解决。

无法定义 dllimport 实体 Password

使用AFX_EXT_CLASS定义声明类
参考此博客内容点击跳转
注意在项目属性->C/C+±>预处理器中,预处理器定义_AFXEXT;删除_USRDLL。

调用动态库显示动态库窗体得到句柄为空且无法显示窗体

这里涉及到_USRDLL和_AFXDLL的用法不同 参考此博客点击跳转
其中
_USRDLL:静态方式链接MFC库,这样子的话本身MFC的库中带有_DllMain函数的定义
_AFXDLL:动态方式链接到MFC库,这样子的话,调用侧dll需要自己定义_DllMain入口函数
可知需要定义_DllMain入口函数,在此我创建dllmain.cpp文件来定义_DllMain入口函数

头停止点不能位于宏或 #if 块中

使用#ifdef和#endif包含整个.CPP内容时提示#endif多余

#ifdef _AFXEXT
#include "pch.h"
...............其他内容
#endif

解决方法:
1) 在解决方案资源管理器中,右击相应的.cpp文件,点击“属性”

2) 在左侧配置属性中,点开“C/C++”,单击“预编译头”

3) 更改右侧第一行的“创建/使用预编译头”,把选项从“使用预编译头(/Yu)”直接置空

fcs140ud.lib(dllmodul.obj) : error LNK2005: _DllMain@12 已经在 dllmain.obj 中定义/找到一个或多个多重定义的符号

解决方法:
1.是否已经删除预处理器定义中 _USRDLL

2.是否使用了 AFX_MANAGE_STATE(AfxGetStaticModuleState()) 参考此博客点击跳转

3.是否代码不是唯一运行 需要进行处理

#ifdef _AFXEXT #endif

MFC封装功能成动态库相关问题汇总记录相关推荐

  1. 属性浏览器控件QtTreePropertyBrowser编译成动态库(设计师插件)

    文章目录 一.回顾 二.动态库编译 1.命令行编译动态库和测试程序 2.vs工具编译动态库和测试程序 3.安装文档 4.测试文档 三.设计师插件编译 1.重写QDesignerCustomWidget ...

  2. bazel 链接第三方动态库_C/C++编程知识:Linux 动态库相关知识整理

    动态库和静态库在C/C++开发中很常见,相比静态库直接被编译到可执行程序,动态库运行时加载使得可执行程序的体积更小,更新动态库可以不用重新编译可执行程序等诸多好处.作者是一个Linux后台开发,这些知 ...

  3. 黑科技:把第三方 iOS 应用转成动态库

    推荐序 本文作者杨君,他之前投稿过一篇安全方面的文章:iOS 符号表恢复 & 逆向支付宝,这次他在国庆期间又发来一篇大作.本文介绍的黑科技非常牛逼,可以将别人的 iOS 应用转成动态库. 看完 ...

  4. suricata 编译成动态库使用

    项目中需求使用suricata 检测功能,只需要获取检测得到的 alert 结果, 需要将suricata的检测功能集成到我们的项目中,并提供接口动态加载规则. 源代码版本 6.0.4 源码 将sur ...

  5. Android导入第三方静态库.a编译成动态库.so

    http://ikinglai.blog.51cto.com/6220785/1324985 在Android开发的时候,经常会使用到用c或c++编写的第三方的静态库.如果有源码的话,可以直接跟你自己 ...

  6. android.bp编译生成so,Android导入第三方静态库.a编译成动态库.so

    在Android开发的时候,经常会使用到用c或c++编写的第三方的静态库.如果有源码的话,可以直接跟你自己的代码一去编译成动态库so,但是如果没有源码的话,你就必须在自己的动态库so里面将别人生成好的 ...

  7. C# PtrToStructure 封装C/C++动态库出现的问题

    目录 1 C文件函数参数有结构体 并且含有指针 2 结构体指针传递参数 3 PtrToStructure报错 结构不得为值类的问题 C# 封装C/C++动态库,主要遇到三个问题: 1 怎样把参数里面的 ...

  8. 将自己写的经常复用的类封装成动态库的方法

    C++的开发不像c#那么给力,基本上引用下就可以了,它的步骤比较繁琐. 第一步:制作动态库 利用VC新建工程时选择win32 dynamic-Link Library(空的工程),然后添加头文件和cp ...

  9. 【C 语言】动态库封装与设计 ( 动态库调用环境搭建 | 创建应用 | 拷贝动态库相关文件到源码路径 | 导入头文件 | 配置动态库引用 | 调用动态库中的函数 )

    文章目录 一.在 Visual Studio 2019 中创建 " 控制台应用 " 程序 二.拷贝 xxx.lib.xxx.dll.xxx.h 到源码路径 三.导入 xxx.h 头 ...

最新文章

  1. XPath crash course note
  2. 某阿里8年资深程序员求助:连续两次绩效挂掉,被hr辞退不给n+1,怎么办?
  3. DataSet 去除重复的行
  4. Java虚拟机学习(6):对象访问
  5. django时差8个小时问题
  6. 栈和队列的区别,栈和堆的区别
  7. Hades:移动端静态分析框架
  8. PAT L1-027 出租
  9. 怎么看b树是几阶_数据库原理基础:设计B树与B+树的目的以及二者的优劣
  10. (转)基于Metronic的Bootstrap开发框架经验总结(9)--实现Web页面内容的打印预览和保存操作...
  11. 号称36个月不卡顿!网友:就是有点贵
  12. AI攻城狮,你需要那个数据集的种子么?
  13. python numpy安装步骤-NumPy 安装
  14. dos系统功能调用的屏幕显示字符是( )号调用_linux混杂设备驱动模型分析(字符设备驱动模型使用篇)...
  15. 企业如何利用OA系统轻松管理员工请休假
  16. php环境安装Java_常用PHP运行环境一键安装包推荐
  17. 1.6 SSH免密登录
  18. 别错过这张AI商用清单:你的生产难题可能被一个应用解决!
  19. 国标MPEG-PS实时流播放器开发(附例子)
  20. Qt QSS QSlider样式

热门文章

  1. 服务器托管是什么?服务器托管优势在哪里?
  2. UOS20 终端误删除之后的处理
  3. 奥鹏计算机应用基础一答案15年,天大15年12月考试《计算机应用基础》大作业考核答案...
  4. 简单使用AspectJ
  5. 电梯黑板签到的测试用例
  6. KLayout学习记录(一)
  7. Swift4.2 Xcode10 日记心情追踪APP
  8. FL2440 3G上网卡拨号上网,并实现mdev自动挂载
  9. 读书笔记——《Python编程从入门到实践》第二章
  10. 华为拼了!三年要发展100万AI开发者和合作伙伴!