Write a Dynamic Link Library with Visual Studio from Scratch

Abstract: This is a tutorial. This tutorial tells you how to creat a solution with Visual Studio containing a project which exports a .dll and a project which build a .exe. And the .exe should call the functions in the .dll.

我们在这里建立一个实现加法的函数dll,然后再用一个exe调用这个dll函数中的加法函数为例,说明如何使用Visual Studio写一个生成dll与exe的解决方案。以D盘为例,首先建立一个文件夹AddSolution。

1、建立项目AddFunction

  • 然后打开Visual Studio,文件-新建-项目-Win32控制台应用程序-名称:AddFunction 位置:D:\AddSolution-应用程序类型:DLL 勾选预编译头-完成。

  • (可选)配置Debug,改平台为x64,配置为Release,改平台为x64。

  • 添加头文件AddFunction.h

2、建立项目TestAdd

  • 同理,打开Visual Studio,文件-新建-项目-Win32控制台应用程序-名称:TestAdd 位置:D:\AddSolution-应用程序类型:控制台应用程序 勾选预编译头-完成。

  • (可选)配置Debug,改平台为x64,配置为Release,改平台为x64。

  • 在D:\AddSolution\TestAdd\TestAdd添加3个文件夹,bin、include、lib。

  • 在”解决方案’TestAdd’”右键-添加-现有项目-D:\AddSolution\AddFunction\AddFunction\AddFunction.vcxproj,此时两个项目处于一个解决方案中,此时的$(SolutionDir)为TestAdd解决方案所在文件夹。

3、写程序。

AddFunction.h

1
2
3
4
5
6
7
8
9
10
11
12
#define MY_CDECL __cdecl
#define MY_STDCALL __stdcall
#ifdef MYAPI_EXPORTS
#define MY_EXPORTS __declspec(dllexport)
#else
#define MY_EXPORTS __declspec(dllimport)
#endif

extern "C"
{
MY_EXPORTS int add(int add1, int add2);
};

AddFunction.cpp

1
2
3
4
5
6
7
#include "stdafx.h"
#include "AddFunction.h"

int add(int add1, int add2)
{
return (add1 + add2);
}

TestAdd.cpp

1
2
3
4
5
6
7
8
9
10
11
#include "stdafx.h"
#include "iostream"
#include "AddFunction.h"

int _tmain(int argc, _TCHAR* argv[])
{
int a, b = 2, c = 3;
a = add(b, c);
std::cout << "Result is " << a << std::endl;
return 0;
}

4、设置属性。

  • 设置AddFunction

1-1.jpg

1-2.jpg

1-3.jpg

  • 编译成功后,将AddFunction.h文件拷贝到D:\AddSolution\TestAdd\TestAdd\include
  • 设置TestAdd

1-4.jpg

1-5.jpg

1-6.jpg

1-7.jpg

  • 编译成功,运行,显示结果。

1-8.jpg