klvoek

klvoek

VS2010,C++win32动态库项目示例

有些东西,接触的时间长了难免生疏,甚至是忘记。对于C++就是这样一种情况。写了long久的C#代码,回过头来要写一个C++动态库的小项目,才发现已经对C++的项目风格很生疏了。好在以前做过的东西,稍微接触一下仍旧会回复两分三分的感觉。

其实这个示例程序MSDN上就有(点这里),而且比较详细了。在文本方面,所以我就无聊到贴图而已,好吧我们开始贴图

 新建动态库项目,选择Win32控制台应用程序。

vs2010,new project

点击确定,你会看到

 vs2010,new project

然后你需要,把预编译头去掉,不选择。

vs2010,new project

完成之后就有了一个项目

vs2010,new project

接下来就让我们对这个项目进行修改,已达到我们期望的目的。获得一个可以生成dll的项目,首先在项目上右键选择属性,你需要进入配置属性>常规>配置类型,进行修改。

看到下面的图片你应该知道要把配置类型改为动态库(*.dll)

vs2010,new project

改完之后,就需要我们在这个里面增加些代码,让这个动态库看起来更像一个动态库。现在我们看一下新建的项目里有一个MatiDownloadDll.cpp但是缺少对应的.h头文件。所以我们需要添加一个对应的头文件,然后加入一些我们希望的代码。

所以,你需要在项目上右键>添加>新建项,在弹出的对话框中选择.h头文件

vs2010,new project

填写好名称之后,点添加就ok了。

你看到了我们的.h文件竟然是这样子的

vs2010,new project

对的,是空白的,所以然后增加代码,记得图中标红的代码是需要特别注意的。

__declspec(dllexport)是让 DLL 能够导出该方法以供其他应用程序使用的关键所在。否则...

vs2010,new project

.h头文件里的代码我们是摆平了,接下来就是在cpp文件中添加实现了。vs初始化的项目里,这个cpp文件中有如下代码。这个时候我脑海里响起了一句广告词:“Don't afraid, just do it!”

vs2010,new project

我们添加的代码,然后编译吧,的确是成功了。哈哈

vs2010,new project

 


我是华丽丽的分割线,接下来需要考验一下你的耐心。所以,请坚持住啊

为了测试我们的动态库项目,于是我打算新建一个项目来测试一下。当然MFC窗体程序总显的那么高级一点

在解决方案上右键,添加>新建项目,选择MFC>MFC应用程序

vs2010,new project

点确定以后你会看到一个MFC向导

vs2010,new project

点下一步,为了更简单,我们选择但对话框窗体和使用静态MFC链接库

vs2010,new project

点下一步

vs2010,new project

点下一步

vs2010,new project

点下一步

vs2010,new project

终于可以点完成了。点完成。于是我们又多了一个项目

vs2010,new project

接下来添加对我们的动态库的引用。在这个项目上右键>引用

vs2010,new project

点添加新引用

vs2010,new project

看到了吧,点确定。然后我们需要添加几个变量设置。首先是告诉编译器MatiDownloadDll.hl在哪里,没错刚才的引用不知道它做了什么,你还需要手动添加一下。

在配置属性>C/C++>常规>附加包含目录  下拉菜单展开后点那个编辑

vs2010,new project

点那个新建文件夹的图标

vs2010,new project

看,新出现一个空项,点左侧的浏览按钮

vs2010,new project

我找到了MatiDownloadDll.h所在的目录,你找到了嘛?

vs2010,new project

然后点选择文件夹>确定就可以回到属性卡了。然后我们还需要高速编译器MatiDownloadDll.dll在哪里。额,这都是什么情况。貌似我们刚才选择引用dll没有什么必要吗?

在配置属性>调试>环境 点击编辑啊

vs2010,new project

似曾相识的一个窗口

vs2010,new project

在这里你需要输入MatiDownloadDll.dll的路径。这一次没有浏览目录让我点了了,回想一下刚才点按个浏览按钮打开的是当前项目的Debug,当前项目是MatiDownloadApp,所以如果我想设置目录为MatiDownloadDll.dll所在目录的话(因为MatiDownloadDll.dll文件在这解决方案下的Debug目录下)格式是PATH=< dll 文件的路径>

所以这个值应该是 PATH=<../../Debug/MatiDownloadDll.dll>

vs2010,new project

点确定,点确定关闭属性选项卡。打开MatiDownloadApp项目里的MatiDownloadAppDlg.cpp文件。

vs2010,new project

在#include "afxdialogex.h"下添加#include “MatiDownloadDll.h”。

vs2010,new project

然后向下滚动到BOOL CMatiDownloadAppDlg::OnInitDialog() 这个函数处,添加代码

	MatiDownloadDll::MatiDownloadCore core;
	char* str = core.GetName();

vs2010,new project

编译成功,加断点调试:You Called GetName Function Successfully!

vs2010,new project

 

 

贡献2010项目一枚下载 http://www.itivy.com/DownloadFile.ashx?id=634454953232042953

 

全文完~~!!

标签: vs2010, 项目, 动态库
Posted by klvoek @ 2011-8-18 22:39:32 阅读(1348) 评论(4)
上一篇:吐槽-阿里旺旺也迷惑
下一篇:小解内存位图

我也来参与讨论

  1. 回复 2011-8-18 23:38:10 by ivy

    这个要顶,怎么公司又搞C++了?
  2. 回复 2011-8-20 9:41:07 by klvoek

    @ivy:相当犀利啊。后来发现 不是每个人都有.net,所以要有个不要.net能运行的东西。然后把.net下载下来安装
  3. 回复 2011-8-20 14:34:03 by ivy

    @klvoek:貌似用飞信自带的.net虚拟机可以解决,去博客园搜索“飞信 .net”,不过可能是精简过了的

  4. 回复 2011-8-22 0:28:14 by klvoek

    @ivy:果断使用Microsoft正版.NET软件
你还可以输入600/600个字符 发表评论
称呼: (必填) 登录 | 开通博客
邮箱: (选填) 你的邮箱地址不会被公开
网站: (选填)
验证码: (必填)
看不清换一张 看不清楚换一张