如何创建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
在.cpp中添加如下代码:
// AddCal.cpp
我们在这里分别导出一个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
来源: http://blog.csdn.net/lp310018931
我们自己写的类或函数,都可以导出成一个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
相关文章推荐
- 转:OPTION SQL_SELECT_LIMIT=DEFAULT java连接mysql错误
- UVa1339 - Ancient Cipher
- LeetCode 22 Generate Parentheses(生成括号)
- JavaScript学习笔记三
- 诚风老师-十年了,当年那帮做直销的穷小子都成了富豪
- The hidden implementation(被隐藏的具体实现)
- scanf注意事项
- SDWebImage
- leetcode 49:Group Anagrams
- 进击的KFC:UI(一)UIView及其子类
- python学习笔记(1)
- longestSubstring
- HDU 4739 Zhuge Liang's Mines(DP)
- /etc/fstab 只读无法修改的解决办法
- Android Studio 简单设置
- 高斯混合模型EM算法
- 4个Linux服务器监控工具
- Shiro使用和源码分析---6
- Java Spring的IoC和AOP的知识点速记
- JavaScript笔记二