DLL入门到深入(3)
来源:互联网 发布:网络爬虫兼职 编辑:程序博客网 时间:2024/05/15 11:32
这篇继前面接着讲dll导出类。
在讲之前,还是看下MSDN http://msdn.microsoft.com/zh-cn/library/d91k01sh(VS.80).aspx中关于.def文件的说明,其中有这样一句话:如果不使用 __declspec(dllexport) 关键字导出 DLL 的函数,则 DLL 需要 .def 文件。
回想一下前面《DLL入门到深入(1)》 中我包含了一个.def文件,事实上并不需要这个文件,可是编译不通过,我也不知道为什么。这个问题等等再说,先看代码:
1 .cpp如下:
#ifndef DLL_03_H_
#define DLL_03_H_
#ifdef DLL_DOG
#define DECLDIR _declspec(dllexport)
#else
#define DECLDIR _declspec(dllimport)
#endif
extern "C"
{
class DECLDIR Dog
{
private:
char name[10];
public:
Dog(char *na);
void Speak();
};
}
#endif
2 .h如下:
#include <iostream>
#ifndef DLL_DOG
#define DLL_DOG
#include "dll_03.h"
Dog::Dog(char *na)
{
strcpy_s(name,10,na);
}
void Dog::Speak()
{
std::cout<<"Wang...Wang...I'm "<<name<<std::endl;
}
#endif
3 接着添加dll_03.def文件,不过这个文件什么都不写,因为没有它不能通过编译。
4 Test.cpp如下:
#include <Windows.h>
#pragma comment(lib,"dll_03.lib")
#include "dll_03.h"
#include <iostream>
using namespace std;
int main()
{
Dog d("xiao hei");
d.Speak();
return 0;
}
我们会发现.def文件完全是个摆设,在(1)中也可以置空,不过.def文件还是有作用的,好像是设置函数在内存中的表现形式,不过本人是菜鸟,那些细节问题这里不追究。我只要能将DLL用到我的程序中就行了,我不是技术狂人,嘿嘿~。
- DLL入门到深入(3)
- DLL入门到深入(1)
- DLL入门到深入(2)
- CNTK从入门到深入研究(3) - Network Builders
- 从入门到深入Fiddler (一)
- 从入门到深入Fiddler (二)
- Hibernate从入门到深入
- CNTK从入门到深入研究(11) - FAQ
- CNTK从入门到深入研究(4)
- DLL入门(一)
- C++ 相关书籍入门到深入
- webrtc从入门到深入---01
- webrtc从入门到深入---02
- ajax从入门到深入精通
- JVM详解-从入门到深入了解
- ajax从入门到深入精通
- RxJS入门(3)----深入Sequence
- CNTK从入门到深入研究(8) - CNTK工程结构(CNTK Core)
- 关于研究所的一些思考
- oracle -----快速删除重复的记录
- silverlight运行时出错:无法下载silverlight应用程序
- DriverMonitor与IRPTrace工具的使用说明
- UCGUI窗体管理及消息处理机制分析
- DLL入门到深入(3)
- IE8 对select取值
- C++数组成员的初始化
- C#命名规则和风格(收集)
- 下错的下拉效果
- 笔记60-70
- php的时区。。。
- 输入匹配的文本框
- VC显示网页验证码、模拟CSDN网页登录