从项目中生成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文件生成成功并且没有问题。

posted @ 2012-12-04 11:24  handspeaker  阅读(4470)  评论(9编辑  收藏  举报