zoukankan      html  css  js  c++  java
  • 【转】VS2010中 C++创建DLL图解

    转载地址:http://blog.csdn.net/g710710/article/details/7255744

    一、DLL的创建 
    创建项目: Win32->Win32项目,名称:MyDLL


    选择DLL (D) ->完成.

    1、新建头文件testdll.h
    testdll.h代码如下:

    #ifndef TestDll_H_
    #define TestDll_H_
    #ifdef MYLIBDLL
    #define MYLIBDLL extern "C" _declspec(dllimport) 
    #else
    #define MYLIBDLL extern "C" _declspec(dllexport) 
    #endif
    MYLIBDLL int Add(int plus1, int plus2);
    //You can also write like this:
    //extern "C" {
    //_declspec(dllexport) int Add(int plus1, int plus2);
    //};
    #endif



    2、新建源文件testdll.cpp
    testdll.cpp代码如下:

    #include "stdafx.h"
    #include "testdll.h"
    #include <iostream>
    using namespace std;
    int Add(int plus1, int plus2)
    {
    int add_result = plus1 + plus2;
    return add_result;
    }




    3、新建模块定义文件mydll.def
    mydll.def代码如下:

    LIBRARY "MyDLL"
    EXPORTS
    Add @1



    def 文件的作用是将DLL的函数入口导出,使程序可以正确访问,因为前面已经有了使用_declspec(dllexport)或_declspec(dllinport)来定义,所以可以不需要。再者使用VS2010学习版本貌似没有def文件类型定义,所以也可以考虑取消使用。

    4、vs2010自动创建dllmain.cpp文件,它定义了DLL 应用程序的入口点。

    dllmain.cpp代码如下:
    // dllmain.cpp : 定义 DLL 应用程序的入口点。
    #include "stdafx.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;
    }

    最后,编译生成MyDLL.dll文件和MyDLL.lib文件。



    1>------ 已启动生成: 项目: MyDLL, 配置: Debug Win32 ------

    1>  dllmain.cpp

    ========== 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ==========

    1>------ 已启动生成: 项目: MyDLL, 配置: Debug Win32 ------

    1>  stdafx.cpp

    1>  testdll.cpp

    1>  MyDLL.cpp

    1>  正在生成代码...

    1>     正在创建库 D:Visual C++工程LibarayMyDLLDebugMyDLL.lib 和对象 D:Visual C++工程LibarayMyDLLDebug

  • 相关阅读:
    Authorize 示例
    javscript 实现iframe加载内容页出现Loading效果
    泛型的Distinct(IEqualityComparer)的用法
    关于ViewData与TempData
    将表 自增长列 清零 循环插入时间自增长
    linq count() sum() Min() Max() Average() 用法
    分页的存储过程
    将图片文件与文本文件合并成图片文件
    asp.net mvc利用Json验证数据和导向页面,解决重复提交问题
    JQUERY DIV浮动提示信息
  • 原文地址:https://www.cnblogs.com/csshaw/p/3958282.html
Copyright © 2011-2022 走看看