zoukankan      html  css  js  c++  java
  • VC++:创建,调用Win32静态链接库

    概述

    DLL(Dynamic Linkable Library)动态链接库,Dll可以看作一种仓库,仓库中包含了可以直接使用的变量,函数或类。
    仓库的发展史经历了"无库" ---> "静态链接库"  ---> "动态链接库"。
    静态链接库与动态链接库都能实现共享代码,如果使用静态链接库,编译后lib中的指令会被包含在生成的EXE文件中,如果使用动态链接库,则不会被包含到EXE文件中,EXE文件执行时动态加载和卸载dll文件。

    库的分类

    1.Win32库(非MFC)库
        Win32库又分为:动态链接库和静态链接库
        Win32库不采用MFC类库结构,导出函数为标准的C接口,可以被MFC或非MFC编写的应用程序调用。
     

    2.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 
    ");
    	return 1;
    }


    wn32lib.h

    #ifndef _WIN32LIB_H 
    #define _WIN32LIB_H
    
    
    int 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")
    #endif
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	int result = WN_Add(1, 5);
    	printf("result = %d
    ", result);
    	WN_Say();
    	getchar();
    	return 0;
    }

    编译连接生成libTest.exe文件,执行结果如下:

    欢迎加群交流:C/C++开发交流

  • 相关阅读:
    spring-boot整合shiro作权限认证
    spring boot整合redis,以及设置缓存过期时间
    java使用Http调用第三方接口,输入链接,获取返回值
    [C#]加密解密 MD5、AES
    [转]Linux 基本操作(RM 删除)
    [转]Windows 经验集
    [随手记]笔记+经验集
    [转][C#]Socket 手写服务端
    [转][C#]跳过调试
    [转][C#]抓取网页内容
  • 原文地址:https://www.cnblogs.com/woniu201/p/11694604.html
Copyright © 2011-2022 走看看