文档章节

MFC 动态库

 山里来的鱼
发布于 2015/08/16 12:55
字数 278
阅读 31
收藏 0

简介

VC6可以编写如下四种动态库:

  1. Win32 DLL (图1 Win32 Dynamic-link Library)

  2. Regular DLLs statically linked to MFC

  3. Regular DLLs dynamically linked to MFC

  4. MFC Extension DLL(using shared MFC DLL)

创建工程时,选择MFC AppWizard(dll)后,会进入图2所示的对话框,进行2、3、4的选择。

图1 MFC New

图2 MFC AppWizard(dll)

如何选择

详见https://msdn.microsoft.com/en-us/library/9se914de.aspx

  1. 如果dll不需要用到MFC,如CString等,则选择第一种(Win32 DLL)

  2. Regular DLLs statically linked to MFC和Regular DLLs dynamically linked to MFC区别在于,后者为动态链接,If you statically link to MFC, the file size of your DLL will be larger and potentially take up extra memory because it loads its own private copy of the MFC library code.

  3. 相对于Regular DLLs,MFC Extension DLL(using shared MFC DLL)可以导出MFC类。

Regular DLLs dynamically linked to MFC

导出函数,可以使用__declspec(dllexport)或者在.def文件中声明。

使用前者,通常需要定义如下一段代码:

#ifdef DLLTEST_EXPORT
#define DLLTEST_API __declspec(dllexport)
#else 
#define DLLTEST_API __declspec(dllimport)
#endif

并在dll工程配置(C++/Proprecessor definitions)中,定义宏DLLTEST_EXPORT

注:如果选择win32 dll,向导会自动添加并定义对应的宏。

© 著作权归作者所有

粉丝 8
博文 156
码字总数 28874
作品 0
珠海
程序员
私信 提问
Python与C/C++ 模块相互调用

Python调用C动态链接库 Python调用C库很简单,不经过任何封装打包成so,再使用python的ctypes调用即可。 这里需要注意的是:使用g++编译生成动态库的代码中的函数 或者 方法时, 需要 使用exter...

晨曦之光
2012/04/12
23.7K
3
dll的概念 dll导出变量 函数 类 (转)

1、 DLL的概念 DLL(Dynamic Linkable Library),动态链接库,可以向程序提供一些函数、变量或类。这些可以直接拿来使用。 静态链接库与动态链接库的区别: (1)静态链接库与动态链接库都是共...

长平狐
2012/10/08
742
1
关于JNI写的DLL调用实际业务DLL的问题

标红圈的2个文件 是我根据 ClassWizard 加载的功能DLL 生成的 然后在我的DLL的这个CPP里面include进来 我想知道我的这个DLL在实际调的时候 是不是会去加载system32下的 动态库.因为我没有实际...

Chaos_heart
2013/01/22
410
2
OpenWRT开发之——对C++的支持(解决库依赖问题)

C++是本人的强项。如果在OpenWrt中不能用C++进行开发,那就有点大失所望了。 接下来将与大家一起来尝试写一个C++程序,并把它做成 ipk 包,并试运行。 各文件内容 在 SDK/package/ 路径下创建...

临峰不畏
2015/05/07
13.2K
9
一个典型的 C++ 程序员成长经历

1. 完整的学一遍 C++ 所有语言特性,典型书籍 "The C++ Programming Language" Part1, Part2, "C++ Primer" 感觉 C++ 像大杂烩(多编程范型),各种精妙的语法特性 (friend, virtual/RTTI, c......

晨曦之光
2012/05/16
546
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql-connector-java升级到8.0后保存时间到数据库出现了时差

在一个新项目中用到了新版的mysql jdbc 驱动 <dependency>     <groupId>mysql</groupId>     <artifactId>mysql-connector-java</artifactId>     <version>8.0.18</version> ......

ValSong
31分钟前
4
0
Spring Boot 如何部署到 Linux 中的服务

打包完成后的 Spring Boot 程序如何部署到 Linux 上的服务? 你可以参考官方的有关部署 Spring Boot 为 Linux 服务的文档。 文档链接如下: https://docs.ossez.com/spring-boot-docs/docs/r...

honeymoose
33分钟前
5
0
Spring Boot 2 实战:使用 Spring Boot Admin 监控你的应用

1. 前言 生产上对 Web 应用 的监控是十分必要的。我们可以近乎实时来对应用的健康、性能等其他指标进行监控来及时应对一些突发情况。避免一些故障的发生。对于 Spring Boot 应用来说我们可以...

码农小胖哥
今天
6
0
ZetCode 教程翻译计划正式启动 | ApacheCN

原文:ZetCode 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 学习资源 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 ...

ApacheCN_飞龙
今天
4
0
CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部