• vs工程生成dll文件及其调用方法


    转载:https://blog.csdn.net/weixin_44536482/article/details/91519413

    vs工程生成dll文件及其调用方法
               
               
                   
                       
                                           
                                           
                                           
                                           
                                           
                                                                                                                                                第55号小白鸭
                        2019-06-12 16:33:00
                       
                        3871
                       
                           
                           
                            收藏
                           
                                                    10                                               
                       
                                           
                   
                                    最后发布:2019-06-12 16:33:00首发:2019-06-12 16:33:00
                   
                   
                                                           
                               分类专栏:
                                                                                                
                                           C语言                                  
                                                                                     
                                                                                                          
                                                                       
                               
                                   
                               
                               
                                    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。                           
                               
                                    本文链接:https://blog.csdn.net/weixin_44536482/article/details/91519413
                               
                           
                                                                                   
                   
                                                                    展开
                                       
               
           
       
       
                       
                    
               
                               
                       
                       
                                                vs工程生成dll文件及其调用方法1、vs工程中dll文件的生成1.1、将生成exe文件的工程修改为生成dll文件1.2、新建工程生成dll文件2、关于dll文件的调用
    1、vs工程中dll文件的生成
    1.1、将生成exe文件的工程修改为生成dll文件
            在工程开发中,我们往往需要将某个工程做成dll动态链接库的形式释放出去;但在工程初期,为方便调试,一般生成的是exe文件;在确认功能开发完毕后,再将其封装成dll文件进行释放。那么,当我们想要将原先是生成exe文件的vs工程,转换为生成dll文件的话;需执行的步骤如下(以vs2013为例):
    (1)、将工程的配置类型配置为dll
    项目->属性->配置属性->常规->配置类型->动态库(.dll)
    1

    (2)、将要释放的接口函数以如下格式进行声明
    _declspec(dllexport) 函数首;
    1
    如直接将当前工程中的main函数作为被另一工程调用的接口函数,则对其声明的格式如下:
    _declspec(dllexport) int main(void);
    1
           
    1.2、新建工程生成dll文件
            若是直接新建生成dll的vs工程,则步骤如下:
            (1)、在新建项目时选择"Win32"项目后,点击确定

            (2)、在弹出的向导中点击下一步,选择DLL后,点击完成

            (3)、此时的工程文件如下,其中dllmain是dll应用程序的入口。如下,其中,source.cpp是自己添加的用于实现功能的文件,在这里对函数进行定义;在source.h中对作为调用接口的函数进行声明,格式与1.1 中的一致,即 _declspec(dllexport) 函数首;

           
    2、关于dll文件的调用
            在前面我们介绍了dll文件的生成,那么对于其调用可以通过如下的代码来进行显示调用,便于在程序执行的过程中随时进行加载。
    #include <stdio.h>
    #include <windows.h>

    void main(void)
    {
        typedef int(*MyFunDll)(void);

        HMODULE hdll = LoadLibrary("Win32Project1.dll");   //加载dll文件
        if (hdll != NULL)
        {
            MyFunDll MyFunCall = (MyFunDll)GetProcAddress(hdll, "main");//检索要调用函数的地址
            if (MyFunCall != NULL)
            {
                MyFunCall();           //调用接口函数
            }
        }

        FreeLibrary(hdll);            //释放dll文件
    }
    12345678910111213141516171819
            通过LoadLibrary()函数对dll文件进行加载;再通过GetProcAddress()函数去获取要调用的接口函数的地址(上例中用MyFunCall去存储接口函数的地址);再调用该接口函数(MyFunCall);最后通过FreeLibrary()函数对dll文件进行释放。所以,如果要用于加载其他的dll文件,上例中需改动的地方有:

    加载的dll文件名(上例中的"Win32Project1.dll");
    要检索的接口函数名(上例中的"main");
    调用的接口函数的格式(如上例中的MyFunCall(),函数的参数信息应保持与要调用的接口函数"main"一致)。


    ————————————————
    版权声明:本文为CSDN博主「第55号小白鸭」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/weixin_44536482/article/details/91519413

  • 相关阅读:
    位运算符
    java中利用itext编辑pdf
    BufferedInputStream实现原理分析
    java File的delete方法删除文件失败
    设置临时java环境
    Android IntentService完全解析 当Service遇到Handler
    关于启动模式
    ZTAndroid为什么要序列化?什么是序列化,怎么进行序列化
    android之数值传递
    关于启动模式之IntentFlag
  • 原文地址:https://www.cnblogs.com/MCSFX/p/13082039.html
Copyright © 2020-2023  润新知