鱼C论坛

 找回密码
 立即注册
查看: 4011|回复: 16

初学Win32问个问题

[复制链接]
发表于 2011-12-17 12:00:33 | 显示全部楼层 |阅读模式
5鱼币
在程序开头有一串文件定义

include windows.inc
include user32.inc
includelib  user32.lib
include  kernel32.inc
includelib   kernel32.lib

就这段,弄的有点晕

请解释一下,include  和 includejlib的区别
为什么第一行之后不用加includelib   windows.lib
windows.inc  和 user32    kernel32  GDI32的关系。(有书说,windows.inc包含后面三个)

最佳答案

查看完整内容

额,win7肯定搜不到32的,64位系统.... 实在不明白的话就跳过吧。总之头文件就是一个对函数和常量以及结构体的声明,includelib就是包含导入库, 不要在这些不重要的细节上耗费太多的时间,往下学,说不定哪天你就突然明白了。 可能是不能言传的原因。。。意会算了 想通了也就那么回事
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-17 12:00:34 | 显示全部楼层
额,win7肯定搜不到32的,64位系统....
  实在不明白的话就跳过吧。总之头文件就是一个对函数和常量以及结构体的声明,includelib就是包含导入库,  不要在这些不重要的细节上耗费太多的时间,往下学,说不定哪天你就突然明白了。

   可能是不能言传的原因。。。意会算了 想通了也就那么回事
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2011-12-17 12:11:48 | 显示全部楼层
记得小甲鱼老师说过啦,一个是相当于头文件,一个是指出需要用到哪些库文件。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2011-12-17 13:27:01 | 显示全部楼层
声明是在WIN系统下的库,并且具体声明用到的函数所在的DLL
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2011-12-17 17:25:07 | 显示全部楼层
呵呵,加油,我在学汇编
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2011-12-17 17:25:43 | 显示全部楼层
WIN32打算下一步学,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2011-12-17 17:26:01 | 显示全部楼层
朋友,加油哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2011-12-18 01:09:14 | 显示全部楼层
先说 include和includelib的区别:前者是包含头文件,头文件是函数和结构等的声明,比如你用的MessageBox就在user32里边有声明,invoke才有办法检查参数个数,而MB_OK这些常量都在windows.inc里边声明,你也可以自己声明,比如在源程序前边写MessageBoxA proto  :DWORD :DWORD :DWORD :DWORD 就可以直接调用了


inlcudelib是包含库,在win32汇编中是动态链接库,所以就是导入函数的信息,比如函数符号,所在位置等等


第二个问题: windows.inc包含的是windows要用到的常量和结构体的声明,没有函数,所以不用加LIB,函数都在另外两个user32和kernel里边了

第三个问题就不用说了吧,windows.inc和后边没有关系,一个声明结构体变量,一个声明函数,相互独立

还是要自己动手看看,你把windows.inc打开看,是不是全是XX   equ   XX      


XX   STRUCT   

     xx  dd  ?
   ········

之类的,这都是常量和结构体,比如WNDCLASS就在windows.inc里边。



好像讲的够清楚了吧。。。。。希望你能早点弄明白,继续深入的学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2011-12-18 01:15:20 | 显示全部楼层

其实win32汇编可以直接跳过,win'下边用C++和delphi完全够用,要想搞破解也不用win32汇编的,有86汇编基础就行了,那些反汇编后虽然指令是那几个,但是和win32汇编完全占不到边,win32汇编就是用高级语法堆出来的,最终还是调用的API

熟悉了windows下的编程就可以去liunx下看看了,以后回不回来就看你自己了,但是回来的话,你就会觉得windows是那么的简单(仅限原理简单,不得不说微软是个把简单问题复杂化的专家)》。。。


也祝你早日找到属于自己的路 ,恭喜发财哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2011-12-18 09:11:23 | 显示全部楼层
川本姨夫 发表于 2011-12-18 01:09
先说 include和includelib的区别:前者是包含头文件,头文件是函数和结构等的声明,比如你用的MessageBox就 ...

为何,在VC++下写窗口程序,只需include <windows.h>
后面直接调用MessageBox(NULL,"sfda","aslkf",0);
而不需要include USER32.dll
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2011-12-18 11:42:33 | 显示全部楼层
Mr.C 发表于 2011-12-18 09:11
为何,在VC++下写窗口程序,只需include
后面直接调用MessageBox(NULL,"sfda","aslkf",0);
而不需要in ...

不同的开发环境怎么比~~~

要想彻底弄明白你打开windows.inc 和windows.h对比一下你就知道了,windows.inc里边看不到一个函数的影子,windows.h自己去打开看,自己动过手才明白
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2011-12-18 12:10:43 | 显示全部楼层
川本姨夫 发表于 2011-12-18 11:42
不同的开发环境怎么比~~~

要想彻底弄明白你打开windows.inc 和windows.h对比一下你就知道了,windows. ...

没错不一样,但是我在windows.h中搜索相关函数,也是搜不到。比如MessageBox。
这是怎么回事。
难道是include中还有include
具体在哪,就MessageBox的定义,你能否在VC++环境中帮我摸一摸这条线路怎么走。
或许你说的没错,两个环境下概念有点不同。
我记得在学VC++时,孙老师说过,  windows.h 就已经包含 Uer32  GDI32  Kernel32了。如果程序不确定所包含的函数在哪一个头文件中,就直接include windows.h
没错这样子吧?

但我还是没在windows.h中找到MessageBox的位置。求指点。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2011-12-18 14:41:28 | 显示全部楼层
Mr.C 发表于 2011-12-18 12:10
没错不一样,但是我在windows.h中搜索相关函数,也是搜不到。比如MessageBox。
这是怎么回事。
难道是i ...

那简单啊,就在windows.h中搜user32 和kernel32吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2011-12-18 15:09:17 | 显示全部楼层
搜不到。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2011-12-18 23:29:45 | 显示全部楼层
include 包含头文件吧
includelib  包含要用到的库文件?

头文件是函数的一些声明,具体调用的的函数在库里面吧
masm32 里面貌似头文件都是xxx.inc  
            库就是xxx.lib了吧

额,我也刚开始学,描述不准确吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2011-12-18 23:32:12 | 显示全部楼层
三本哥回答的最细致,分给你了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2011-12-18 23:39:57 | 显示全部楼层
windows.inc  里面搜到MSGF_MESSAGEBOX         equ 1
user32直接有个user32.inc头文件啊  里面可以搜到MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:DWORD
MessageBox equ <MessageBoxA>

MessageBoxExA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
MessageBoxEx equ <MessageBoxExA>

MessageBoxExW PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
MessageBoxIndirectA PROTO :DWORD
MessageBoxIndirect equ <MessageBoxIndirectA>

等等应该就是声明了吧

在vc98 的include下的windows.h里面也有NOMB              - MB_* and MessageBox()

据说masm32只不过是把这些函数库重新用汇编写了遍,不知道具体是怎么回事

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-8 18:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表