标题:请教 关于动态链接库的问题
只看楼主
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
得分:0 
回复 19楼 hellovfp

这个吗?

梅尚程荀
马谭杨奚







                                                       
2012-05-18 14:29
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
得分:0 
哈哈 搞定了 原来 dll工程的源文件要带.h 汗啊

梅尚程荀
马谭杨奚







                                                       
2012-05-18 14:51
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
得分:0 
正确,就是这个工具,ms提供的工具还是不错的。

我们都在路上。。。。。
2012-05-18 14:58
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
得分:0 
回复 22楼 有容就大
DllProj.rar (649.01 KB)

如果搞不定,这是临时做的一个例子,你可以看一下这个工程的各个设置。
只要按rebuilding all 就可以一次编译成功的。

我们都在路上。。。。。
2012-05-18 15:01
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
得分:0 
DLL的作用还可以做插件,也就是T版以前说的,过去的程序可以调用新写的代码,这就是程序设计的不同之处。
你可以查找插件制作相关知识的文章,来补充自己的知识量。

我们都在路上。。。。。
2012-05-18 15:05
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
得分:0 
回复 24楼 hellovfp
这样看了就更明白了 现在的问题是 如果自己写的一个DLL 然后和自己写的程序放在一个空间里,用他的头文件就能使用它里面的函数了 , 那为什么VC6提供的DLL 我们只要在link设置里加上(如kernel32.lib)就不要和自己写的应用程序出现在一个空间里了。

梅尚程荀
马谭杨奚







                                                       
2012-05-18 15:51
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
得分:0 
回复 26楼 有容就大
你认为我们用Win32 API的时候不用头文件,光设置一个导入库就可以链结了?
说明你没有明白为什么要包含windows.h。。

Win32 API由dll头文件+DLL导入库提供给我们使用,我们调用的都是对应的windows\system32下面的dll。
和我们自己用DLL工程创建的DLL没有什么两样,我们的DLL中的API和系统API都是一样的接口,同级的。

想一想自己的DLL的头文件可不可以单独放在include目录中进行管理?

[ 本帖最后由 hellovfp 于 2012-5-19 11:11 编辑 ]

我们都在路上。。。。。
2012-05-19 10:28
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
得分:0 
回复 27楼 hellovfp
问题是MessageBox是一个小型窗口 它在具体实现时 也就是在DLL工程中的cpp实现 应该是写一个窗口然后在窗口上写标题 文本 和 建立按键 那实现这个小型窗口时又需要调用WINDOWS.H 。这样。。。。咋办啊

先问个问题  这个句子: CSize operator-() const;  MFC AFXWIN.H内的一段代码是操作符重载吗 怎么解释啊
程序代码:
class CSize : public tagSIZE
{
public:

// Constructors
    // construct an uninitialized size
    CSize();
    // create from two integers
    CSize(int initCX, int initCY);
    // create from another size
    CSize(SIZE initSize);
    // create from a point
    CSize(POINT initPt);
    // create from a DWORD: cx = LOWORD(dw) cy = HIWORD(dw)
    CSize(DWORD dwSize);

// Operations
    BOOL operator==(SIZE size) const;
    BOOL operator!=(SIZE size) const;
    void operator+=(SIZE size);
    void operator-=(SIZE size);

// Operators returning CSize values
    CSize operator+(SIZE size) const;
    CSize operator-(SIZE size) const;
    CSize operator-() const;               // 就在这里

// Operators returning CPoint values
    CPoint operator+(POINT point) const;
    CPoint operator-(POINT point) const;

// Operators returning CRect values
    CRect operator+(const RECT* lpRect) const;
    CRect operator-(const RECT* lpRect) const;
};


 

[ 本帖最后由 有容就大 于 2012-5-19 11:11 编辑 ]

梅尚程荀
马谭杨奚







                                                       
2012-05-19 11:09
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
得分:0 
回复 28楼 有容就大
运算符重载啊,让类表现得更像一个内置数据类型。
这样类可以像内置数据类型一样表达出这样的表达式:CPoint a += CPoint b;
这是C++中的一个强大的方面。

C++是这个世界是最难学,但最易用的语言,易用性是指写好的C++类使用很方便。
C++由四个部分组成:C面象过程部分,C++面象对象部分,模版泛型编程部分和STL标准库部分。
C++提供了C没有的一些新特性,如函数重载,默认参数值。。。

我们都在路上。。。。。
2012-05-19 11:17
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
得分:0 
 CSize operator-(SIZE size) const;

 CSize operator-() const;               // 就在这里

为什么一个有参数一个没有参数?

梅尚程荀
马谭杨奚







                                                       
2012-05-19 11:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-367685-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.179683 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved