MFC随手记之一

                                                                  随手记就是防止以后遗忘而临时写的杂谈,内容不保证正确。

*********************************************刚无意间又发现一篇更好地博文:它的特点在于让我知道调用DLL中的数据成员变量。

http://blog.csdn.net/panyanyany/article/details/8065823

1、利用CString.Format整形转换成字符串.

http://jingyan.baidu.com/article/0aa2237594fb9b88cc0d641d.html

2、C++/MFC的DLL调用(环境:VC++6.0)

       新建一个DLL生成工程(WIN32的或者MFC的),

    新建两个文件:dllDemo.h, dllDemo.cpp

    在头文件”dllDemo.h”中声明接口函数: 

     extern "C" _declspec(dllimport) int Sum(int a,int b);(dllimport 为输出DLL);

     然后在“dllDemo.cpp”文件中实现接口函数: 

 

  #include"dllDemo.h"
extern"C" _declspec(dllexport) 
int Sum(int a, int b) 
{
return a+b;
}

 执行后,在Debug目录下会声称.dll和.lib两个文件。

 

然后新建一个工程用于实现DLL调用(可以是WIN32应用台程序也可以是MFC .exe工程)


   ***********************************2.1     静态DLL调用:在程序执行之前将DLL中的内容全部加载进来,随后直接调用。

       1、把上面DLL工程生成的.dll和.lib文件拷贝到你刚刚新建的工程目录的下的debug目录下,

       2、  然后进入(工程)project-》(设置)settings中的link(连接)下,找到“对象/库模块一栏”在里面                                          

              写“C:\Users\Administrator\Desktop\mydll\Debug\mydll.lib ”(根据自己lib文件所在位置输入地址);

      3、在你的调用工程中的头文件中输入调用声明:

          extern "C" _declspec(dllimport) int Sum(int a,int b);//*******************这里要把export改成import ,dll输出改成dll调进嘛。

         如果是MFC调用中工程,可以把调用声明语句放在stdafx.h中

       4、 这样就可以直接调用DLL中的函数。

   ************************************2.2   动态DLL调用:需要调用DLL的某些函数,就仅仅加载并调用它。

       1、只需要把.dll文件拷贝进新建用于调用dll的工程的debug目录下,(无需lib)。属性设置到此为止。

       2、书写函数指针,LoadLibrary,GetProcAddress

3、可以直接调用dll中的函数。

4、 FreeLibrary(hDLL)


*************************动态和静态的区别

1、调用简便性:

动态就是需要用某个函数的时候就调用它,但每次调用都要写一遍LoadLibrary,GetProcAddress等语句,如果DLL里有很多函数,表示吃不

消。

静态调用就是暴力了点,不管你需不需要这些函数,我统统给你加载进来,虽然有点浪费资源,但这样调用的时候可以不需要使  

LoadLibrary,GetProcAddress语句就可以直接调用了。调用函数多的时候,就用这个吧。

2、调用实现的步骤差异:

2.1生成DLL文件的过程都是一样的。首先开创一个DLL工程。

然后先在头文件中声明一下:

extern"C" _declspec(dllexport)int Sum(int a, int b)

再然后在实现文件中实现它:

extern"C" _declspec(dllexport)

int Sum(int a, int b)

{return a+b;}

2.2步骤差异:

2.2.1 动态调用只需将dll文件拷贝到调用工程中的debug目录下,然后使用LoadLibrary,GetProcAddress,调用函数,FreeLibrary语句

就okay了。

而静态弟调用需要同时将dll和lib文件都拷贝到debug目录中。

还需要在工程->设置->连接->对象/库模板中输入.lib所在的地址,

这样,还要在头文件中预先声明:extern"C"_declspec(dllimport)int Sum(int a,int b);然后就可以直接调用了。

     http://www.cnblogs.com/beer/archive/2010/08/19/1803560.html

     (我是按照上面这个链接做的,感觉比第二个链接简单易懂好上手,不过还是跟它里面有的介绍有出入)

    http://blog.csdn.net/suxinpingtao51/article/details/8910015

(感觉个人的实现过程跟链接中的内容不太一样,只要实现出来了就行)。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值