zoukankan      html  css  js  c++  java
  • 【DLL相关】实现函数的DLL封装,并在另一个项目中调用

    直接给出步骤:

    ===========函数的DLL封装===========

    1.创建第一个项目:win32控制台程序,应用程序类型:DLL,附加选项:导出符号(命名:double_dll)

    2.double_dll.h中加入函数定义
       extern DOUBLE_DLL_API int doublefun(int);//DOUBLE_DLL_API 根据项目名称不同而不同

    3.double_dll.cpp加入函数实现
     extern DOUBLE_DLL_API int doublefun(int x)//DOUBLE_DLL_API 根据项目名称不同而不同
     {
      return 2*x;
     }

    4.编译(产生的将是dll、lib文件,不是应用程序)

    注:如果用Dependency Walker可以在编译后生成的double_dll.dll中看到int doublefun(int),那么说明我们已经把函数doublefun封装进dll,剩下的就是阐述如何在另外一个项目中调用这个dll文件中的函数。

    ===========调用DLL文件中的函数===========

    1.创建第二个项目:普通的win32空项目(命名:call_doublefun)

    2.把第一个项目编译后产生的.h放入与第二个项目的.cpp文件同一目录(方便include)

    3.把第一个项目编译后产生的.dll和.lib放入第二个项目的Debug(就是应用程序的出生地)

    4.设置:链接器-常规-附加库目录XXX\Projects\call_doublefun\Debug(这里的“XXX”所指代的大家都明白的)

    5.设置:链接器-输入-附加依赖项double_dll.lib

    6.在第二个项目的cpp文件的合适位置加入两句话

       第一句#include "double_dll.h"
       第二句extern _declspec(dllimport) int doublefun(int); 

    举例:

    #include <iostream>
    #include "double_dll.h"
    using namespace std;
    extern _declspec(dllimport) int doublefun(int); 
    void main()
    {
     int x=0;
     cout<<"Please input X:";
     cin>>x;
     cout<<"2*X=";
     cout<<doublefun(x)<<endl;
    }

    参考:http://www.php18.com/tutorial-3150.html

  • 相关阅读:
    [Java Spring] Convertors
    [Java Spring] @InitBinder
    [Java Spring] Validations for Entity
    [Java JPA] @Query
    测试人员为什么要深入到项目实现中去
    有赞的深度需求功能测试
    youtube-dl 使用
    mysql update 的时候使用left join和where语句
    openstack 虚拟机设备管理器cpu核数与任务管理器不一致
    tcp扫描器实现原理
  • 原文地址:https://www.cnblogs.com/caixu/p/1930951.html
Copyright © 2011-2022 走看看