您的位置:首页 > 其它

如何创建dll工程

2015-11-10 22:42 741 查看
下面介绍如何创建一个dll项目。

我们自己写的类或函数,都可以导出成一个dll供他人使用,比如自己写的一个File操作类或加载某种格式文件的类等。

首先创建一个dll项目:

我们还是在前面创建的解决方案下再新建一个dll项目,用来导出一些公用的功能函数。

在解决方案上右键,添加新项目:



选择Win32项目,项目命名为MyDLL,单击浏览按键,选择Project文件夹,这是我们之前自己建的一个文件夹,专门用来存放各个项目的项目相关文件。



单击下一步,选择"DLL"和"空项目"两个选项,完成。



好了,现在Dll项目创建完成了,现在向项目添加.cpp和.h源代码文件。就像我们上面将项目文件都放在Project文件夹下一样,我们把源文件都放在Src文件夹下,在Src文件夹下新建一个MyDll文件夹,选择该文件夹。我们可以把.cpp和.h文件都放在这个文件夹下。



最后一步就是设置项目属性了。具体可以参考前面的文章。否则编译生成的文件都会与项目文件在同一目录下,即Project/MyDll中。

这里因此项目简单,没有依赖其他的Dll所以只设置debug和release中的输出目录和中间目录。



项目创建完了,现在在.h中添加如下代码:

// AddCal.h

#ifndef _ADD_CAL_H_
#define _ADD_CAL_H_

#ifdef MYDLL_EXPORT
#define EXPORT_DLL _declspec(dllexport)
#else
#define EXPORT_DLL _declspec(dllimport)
#endif

EXPORT_DLL int Add(int a, int b);

class EXPORT_DLL Point
{
public:
	Point(int _x, int _y);

public:
	void print();

private:
	int m_x;
	int m_y;
};

#undef EXPORT_DLL

#endif


在.cpp中添加如下代码:

// AddCal.cpp

#include "AddCal.h"
#include <iostream>

int Add(int a, int b)
{
	return (a + b);
}

Point::Point(int _x, int _y)
:m_x(_x), m_y(_y)
{

}

void Point::print()
{
	std::cout <<"x:"<< m_x << "  y:" << m_y << std::endl;
}


我们在这里分别导出一个Add()函数和一个Point类。

上述代码完成之后,还要在属性对话框中添加预定义宏: C\C++->预处理器定义 中添加MYDLL_EXPORT;

编译一下,在lib的项目目录下生成相应的dll和lib文件。

现在我们在另一个项目中引用该dll文件。

我们在NYOJ_001项目中引用刚才MyDll中生成的Dll,首先首先将上面生成的dll拷贝到项目NYOJ_OO1的.exe生成的目录下。然后设置项目属性,

设置C\C++->常规->附加包含目录为 $(SolutionDir)Src\MyDLL\

链接器->常规->附加库目录为 $(SolutionDir)Lib\$(Platform)\$(Configuration)\

链接器->输出->附加依赖项 添加 MyDLL.lib

我们现在main函数中分别调用刚才导出的函数和类。

//main.cpp

#include <iostream>

#include "AddCal.h"

using namespace std;

int main()
{
	int a = 1, b = 2;
	cout << Add(a, b)<<endl;
	Point pt(1, 2);
	pt.print();

	system("pause");
}
好了,运行看看:



来源: http://blog.csdn.net/lp310018931
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: