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

来源:互联网 发布:数据挖掘的预测算法 编辑:程序博客网 时间:2024/06/04 01:37

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)#endifnamespace 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”)
0 0
原创粉丝点击