zoukankan      html  css  js  c++  java
  • 从项目中生成dll文件的快速方法(a fast way to generate dll from the project)

    最近学到了一个非常方便的从VisualStudio的project中生成dll的方法,记录如下:

    以一个简单的工程作为例子,假设现在我们有一个叫dllDemo的工程,里面有如下两个文件:

    dllDemo.h

    #include<stdlib.h>
    #include<stdio.h>
    
    int main ();
    int Max(int x,int y);

    dllDemo.cpp

    #include"dllDemo.h"
    
    int main ()
    {
    
        int max_value=Max(100,7);
        printf("%d\n",max_value);
        return 0;
    }
    
    int Max(int x,int y)
    {
        return x>y?x:y;
    }

    我用的是vs2005,其他的也大同小异,目录结构如下:

    如图,这是一个非常简单工程,里面也没什么东西,只有一个main函数和一个做示范的max函数。

    现在,我们的目的就是把这个max函数从这个项目里面提取出来,封装成一个dll文件,让其他的程序可以调用通过dll文件调用这个函数。

    第一步 

    首先,我们用记事本创建一个.def文件,文件名的话随便起一个就行,比如叫:GenDll.def,然后按照以下格式填写内容:

    LIBRARY    "your_project_name"
    
    EXPORTS
    
    your_function_name

    例如,我们的项目名称叫DllDemo,需要封装到dll文件中的函数叫max,就这么写:

    LIBRARY    "dllDemo"
    
    EXPORTS
    
    Max

    然后把GenDll.def复制到DllDemo\DllDemo目录下,并且在项目中把这个文件添加到源文件夹里面。其实直接右键添加新建项,然后新添加一个def文件应该也可以,不过我的vs2005每次这么做的时候都会报错,所以,为了保险起见,还是按照上述的方法做。此时,我们的目录结构如下:

    第二步

    这一步我们需要对项目的属性进行一些修改,

    1.右键项目-属性-配置属性-常规-配置类型-动态库dll

    2.右键项目-属性-链接器-常规-输出文件-把文件名称后缀改为dll

    3.右键项目-属性-链接器-输入-模块定义文件-输入def文件名称

    4.右键项目-属性-链接器-高级-导入库-输入$(TargetDir)$(TargetName).lib

    OK,做到这一步基本就完成了,配置属性结束了。

    第三步


    重新生成一遍解决方案,然后在DllDemo\debug下就会发现多了一个DllDemo.dll文件,这个就是我们需要的dll文件。

    第四步

    上面三个步骤生成了我们想要的dll文件,但是我们还没有测试这个dll是否可用。有的时候,很可能由于疏忽,导致dll文件里面的函数有问题。因此,我们还要写一个test程序,来测试性能。

    方法也很简单,直接在当前的解决方案上右键-新建项目,然后随便起个名,我的是DllTest,目录结构如下:

    DllTest.cpp内容如下:

    #include<stdlib.h>
    #include<stdio.h>
    #include<Windows.h>
    
    int Max(int x,int y);
    
    int main ()
    {
        int max_value=Max(300,127);
        printf("%d\n",max_value);
        system("pause");
        return 0;
    }

    然后把项目依赖性里面DllTest的依赖项改为DllDemo,然后把DllTest设置为启动项,接下来启动调试,

    如果编译没有问题,且控制台输出如下内容:

    恭喜你,你的dll文件生成成功并且没有问题。

  • 相关阅读:
    ubuntu 开启ssh
    ubuntu 电源管理
    吸血鬼数
    java泛型
    分布式数据库主键id生成策略
    使用SSH工具连接到MySQL
    MySQL命令行基本命令操作
    bootstrap图片轮播
    java设计模式----工厂模式
    java设计模式----享元模式
  • 原文地址:https://www.cnblogs.com/hrlnw/p/2799965.html
Copyright © 2011-2022 走看看