window平台下动态库与静态库生成与使用(C++)

window平台下动态库与静态库生成与使用(C++)

动态库
动态库的生成

vs的设置自行百度,废话不多讲,上代码:

代码参考:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=29121609&id=3851844

//add.h
#pragma once;

//该宏完成在dll项目内部使用__declspec(dllexport)导出
//在dll项目外部使用时,用__declspec(dllimport)导入
//宏DLL_EXPORT在add.cpp中定义

#ifdef DLL_EXPORT
#define DLL_API __declspec(dllexport)
#else
#define DLL_API __declspec(dllimport)
#endif

namespace test
{
    //导出类
    class DLL_API SimpleDll  //在要导出的类或函数前面添加相应的操作
    {
    public:
        SimpleDll();
        ~SimpleDll();
        int add(int x, int y); //简单方法
    };
}
//------------------ add.cpp ----------------

//注意此处的宏定义需要写在#include "add.h"之前
//以完成在dll项目内部使用__declspec(dllexport)导出
//在dll项目外部使用时,用__declspec(dllimport)导入
#define DLL_EXPORT
#include "add.h"
namespace test
{
    SimpleDll::SimpleDll()
    {
    }

    SimpleDll::~SimpleDll()
    {
    }
    int SimpleDll::add(int x, int y)
    {
        return x + y;
    }
}
// dllmain.cpp : 定义 DLL 应用程序的入口点。
//#include "stdafx.h"

#include <windows.h>

BOOL APIENTRY DllMain(HMODULE hModule,
    DWORD  ul_reason_for_call,
    LPVOID lpReserved
)
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}
动态库的使用
  1. 拷贝头文件、生成的lib与dll文件

  2. VS设置相关的路径

  3. 和正常的一样使用
动态库的调试
  1. 进入dll工程文件配置界面。
  2. 设置Debugging中的command为调用此dll的exe程序。
  3. 将dll设置为启动项目启动
  4. 此时可以直接对dll中的函数进行调试
    这里写图片描述
静态库
  1. 静态库相对简单,直接将项目设置为Static library (.lib)
  2. 然后就没有然后了,编译生成即可.注意是否需要兼容c,若要则添加相应的条件编译选项(extern “C”)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值