dll的弱引用和强引用
来源:互联网 发布:民族性格知乎 编辑:程序博客网 时间:2024/04/30 11:11
先描述下dll的创建方法
Test.h和Test.cpp
#pragma once#ifdef __COMMON#define __COMMON_EXPORT __declspec(dllexport)#else#define __COMMON_EXPORT __declspec(dllimport)#endifextern "C" __COMMON_EXPORT int __cdecl testFunc1(int a,int b);class __COMMON_EXPORT MyClass{public:int addFunc(int a,int b);};
Test.cpp
#include "test.h"int testFunc2(int a,int b){return a+b;} int testFunc1(int a,int b){return testFunc2(a,b);}int MyClass::addFunc(int a,int b){return a+b;}
生成了Common.dll和Common.lib文件
使用方法,新建工程
#include <iostream>#include <Windows.h>#include <WinBase.h>#include "../CommonDll/test.h"using namespace std;#pragma comment(lib,"CommonDll")int main(){//弱引用dll,弱引用dll不能使用导出的类//HMODULE module=LoadLibraryA("CommonDll.dll");//typedef int (*func)(int,int);//func f=(func)GetProcAddress(module,"testFunc1");//强引用dllint a=testFunc1(2,5);cout<<a<<endl;MyClass cat;cout<<cat.addFunc(6,7)<<endl;}
对于dll的引用,有两种方法
第一种方法:使用LoadLibrary和GetProcAddress配合,这种方法称为弱引用,其优点是 可以跨编译器使用,也就是用vs2008编译的dll,使用时候,到vs2010下代码可以直接用。 缺点是 不能使用导出的类
第二种方法:引用CommonDll.lib来引用,这种方法的优缺点就和 弱应用刚好互补,优点是使用方便,可以使用导出的类,缺点是 vs2008编译出来的lib,到vs2010或者其他版本的编译器就有可能不能使用。
#ifdef __COMMON#define __COMMON_EXPORT __declspec(dllexport)#else#define __COMMON_EXPORT __declspec(dllimport)#endif
这种方法对于强引用来说,在编译CommonDll.dll时候,在预处理器里定义了宏__COMMON,这样就会导出对应的函数和类
当引用CommonDll.lib时候,没有定义__Common,__COMMON_EXPORT就成了dllimport,它就会把lib导出的函数导入
查看更多
- dll的弱引用和强引用
- dll的弱引用和强引用
- 对象的强引用和弱引用
- 对象的强引用和弱引用
- .net的强引用和弱引用
- 强引用和弱引用
- 强引用和弱引用
- 强引用和弱引用
- 强引用、弱引用和软引用
- android中四大引用的区别,强引用、软引用、弱引用和虚引用
- Java 的四大引用:强引用、软引用、弱引用和虚引用
- java中几种引用类型的定义和区别。强引用,软引用,弱引用,虚引用
- Java 的引用类型有哪几种:强引用、软引用、弱引用和虚引用
- 转:强引用、软引用、弱引用和虚引用
- Java强引用、软引用、弱引用和虚引用
- Java强引用、软引用、弱引用和虚引用
- 强引用,软引用,弱引用和虚引用
- strong and weak 强引用和弱引用的区别
- CodeSmith生成实体类模板
- Java对象的序列化
- ACM题几个错误原因(持续更新)
- socket 、webservices、Json的区别
- 360黑匣子之谜——奇虎360“癌”性基因大揭秘
- dll的弱引用和强引用
- 算法 shell排序法 - 改良的插入排序
- 使思维导图的清晰度更高
- 华为的技术超越之路:研发费用逼近爱立信
- 设计模式总结
- S5PV210开发板底层软件移植(2) - 移植Linux kernel 3.8
- 随笔
- 我的php学习笔记(二十九)PHP5中Cookie与 Session详解
- struts2