VC++:创建,调用Win32静态链接库
来源:互联网 发布:windows10自带录屏软件 编辑:程序博客网 时间:2024/05/22 06:25
概述
DLL(Dynamic Linkable Library)动态链接库,Dll可以看作一种仓库,仓库中包含了可以直接使用的变量,函数或类。
仓库的发展史经历了"无库" ---> "静态链接库" ---> "动态链接库"。
静态链接库与动态链接库都能实现共享代码,如果使用静态链接库,编译后lib中的指令会被包含在生成的EXE文件中,如果使用动态链接库,则不会被包含到EXE文件中,EXE文件执行时动态加载和卸载dll文件。
仓库的发展史经历了"无库" ---> "静态链接库" ---> "动态链接库"。
静态链接库与动态链接库都能实现共享代码,如果使用静态链接库,编译后lib中的指令会被包含在生成的EXE文件中,如果使用动态链接库,则不会被包含到EXE文件中,EXE文件执行时动态加载和卸载dll文件。
库的分类
1.Win32库(非MFC)库
Win32库又分为:动态链接库和静态链接库
Win32库不采用MFC类库结构,导出函数为标准的C接口,可以被MFC或非MFC编写的应用程序调用。
Win32库又分为:动态链接库和静态链接库
Win32库不采用MFC类库结构,导出函数为标准的C接口,可以被MFC或非MFC编写的应用程序调用。
2.MFC库
MFC库又分为:MFC规则DLL和MFC扩展DLL
MFC规则DLL:包含一个集成自CWinApp的类,但其无消息循环。
MFC扩展DLL:采用MFC的动态链接库创建,它只能被MFC编写的应用程序调用。
MFC库又分为:MFC规则DLL和MFC扩展DLL
MFC规则DLL:包含一个集成自CWinApp的类,但其无消息循环。
MFC扩展DLL:采用MFC的动态链接库创建,它只能被MFC编写的应用程序调用。
创建Win32静态链接库
使用vs2010进行创建
1.“新建项目” 项目名为"wn32lib”--->选择"Win32项目" --->下一步 勾选 "静态库",点击完成:
这时候将生成一个空的项目,创建wn32lib.cpp和wn32lib.h。wn32lib.cpp
#include <stdio.h>int WN_Add(int a, int b){return a + b;}int WN_Say(){printf("say hello \n");return 1;}
wn32lib.h
#ifndef _WIN32LIB_H #define _WIN32LIB_Hint WN_Add(int a, int b);int WN_Say();#endif编译该项目,会在Debug目录下生成wn32lib.lib文件
调用Win32静态链接库
鼠标在解决方案右击 ---> "添加" ---> "新建项目",项目名称为"libTest",选择win32控制台项目
在libTest.cpp源文件中添加如下代码:
// libTest.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "../wn32lib/wn32lib.h"#ifdef _DEBUG#pragma comment(lib, "../Debug/wn32lib.lib")#else#pragma comment(lib, "../Release/wn32lib.lib")#endifint _tmain(int argc, _TCHAR* argv[]){int result = WN_Add(1, 5);printf("result = %d\n", result);WN_Say();getchar();return 0;}编译连接生成libTest.exe文件,执行结果如下:
欢迎加群交流:C/C++开发交流
扫码关注公众号"CPP开发之路"
阅读全文
0 0
- VC++:创建,调用Win32静态链接库
- VC++:创建,调用Win32动态链接库
- vc调用静态链接库
- VC静态链接库与动态链接库的区别,创建及调用
- VC win32 static library静态链接库简单示例
- VS2010创建和调用静态链接库
- VS2010创建、调用静态链接库
- 静态链接库的创建和调用
- 创建和调用动态链接库与静态链接库
- VC生成动态链接库+静态调用---window
- KEIL 创建静态链接库+ 调用自己创建的静态链接库
- VC手把手一步步创建自己的静态链接库
- 创建静态链接库
- 创建静态链接库
- 创建静态链接库
- codeblocks中创建和调用静态链接库(lib)
- Delphi中如何调用VC++创建的动态链接库
- Delphi中怎么调用VC++创建的动态链接库
- 技术文章|机器学习先驱Thomas Dietterich: 如何构建强健的人工智能
- Struts2.5关于<s:action.../>标签找不到Action的问题
- ibatis 对象一对多解决N+1问题
- 内存问题
- 彻底理解js中this的指向
- VC++:创建,调用Win32静态链接库
- 使用 ButterKnife annotation 代替 findViewById()
- 软件安装与维护【Linux-shell】
- 协变数组和类型擦除
- 正则表达式入门--xyphf
- [Python]改变图片的分辨率大小
- RK312x机顶盒Android4.4系统编译
- hadoop系列(一) Centos7下安装hadoop
- FMDB