创建动态链接库项目
- 打开Microsoft Visual Studio 2010,选择文件->新建项目->Win32控制台应用程序->在应用程序设置页面选择下图所示选项:
- 向动态链接库添加类:
- 添加新类头文件。右键单击simple项目,Add->New Item,选择Header File(.h),设置名称,单击Add。
- 添加新类源文件。右键单击simple项目,Add->New Item,选择C++ File(.cpp),设置名称,单击Add。
说明:
头文件(.h)中的代码应当使用__declspec(dllexport),如图:
在该项目的Debug文件夹中的内容如图:
当头文件(.h)中的代码不使用__declspec(dllexport)时无法产生.lib文件,如图:
在该项目的Debug文件夹中的内容如图:
- 完成后点击Build->Build Solution,生成解决方案。可在该项目的Debug下查看生成的simple.lib和simple.dll.文件。
创建引用动态链接库的应用程序
- 打开Microsoft Visual Studio 2010,选择文件->新建项目->Win32控制台应用程序->在应用程序设置页面选择下图所示选项:
- 为控制台应用程序添加main.cpp。右键单击usesimple项目,Add->New Item,选择C++ File(.cpp),设置名称为main,单击Add。
- 添加.lib
- 添加路径:项目->属性
- 引用lib(有两种方式选择)
- #pragma comment(lib,”simple.lib”)
- 项目->属性
- 添加路径:项目->属性
- 包含头文件(simple.h)路径
- 将生成的simple.dll文件拷入usesimple.exe文件的那个目录(一般是该项目下的Debug下)。
未完成该步时会提示如下错误:
关于__declspec(dllexport) __declspec(dllimport)
在动态链接库项目中的头文件中导出函数和导出类的区别:
- 导出类
class __declspec( dllexport ) BinaryTreeNode
{
public:
int m_nValue;
BinaryTreeNode* m_pLeft;
BinaryTreeNode* m_pRight;
};
- 导出函数
__declspec( dllexport ) BinaryTreeNode* CreateBinaryTreeNode(int value);
__declspec( dllexport ) void PrintTreeNode(BinaryTreeNode* pNode);
__declspec( dllexport ) void PrintTree(BinaryTreeNode* pRoot);
__declspec( dllexport ) void DestroyTree(BinaryTreeNode* pRoot);