关于编译链接的简单问题!(100分)

  • 主题发起人 主题发起人 网上之猩
  • 开始时间 开始时间

网上之猩

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾,献丑了:
我有特多的简单问题:
1、请详细解释以下的make文件各个命令及参数的含义,请尽量透彻:
All:demo.exe
demo.res:demo.rc
rc -r -i/borlandc/include demo.rc
demo.obj:demo.c demo.h
bcc -c -w-par -p -w -2 test.c
demo.exe:demo.obj demo.def demo.res
tlink /n /Tw /L/borlandc/lib cOws demo,demo,NUL,import mathws cws,demo
rc -t demo.res
2.主程序的.def 文件中最后原来是EXPORTS windowsfun,当在主程序中加入dll后,dll文件的.de文件尾部是EXPORT pro1 @1和pro2 @2,(@表示什么?)而此时主程序中该位置却改成了IMPORT:pro1 @1和pro2 @2字段,这部分所定义的函数是什么意思?为什么书上说windows只有根据_export来确认回叫函数?因为“回叫”与“输出”(EXPORTS)有什么关系?主程序中加dll后,怎么把这个EXPORTS段也改成IMPORT:pro1 @1和pro2 了?原来的设定怎么办?dll中的设EXPORT pro1 @1和pro2 @2表示pro1和pro2是回叫函数吗?可以有自定义的回叫函数吗?一片糨糊!!
3、int winmain(...)返回int型,dos下就不需要嘛,它为什么要返回?返回给哪里?什么作用?
 
>> 1、请详细解释以下的make文件各个命令及参数的含义,请尽量透彻:
>> All:demo.exe
ALL:是make时确省的入口, 相当于main函数是程序执行时的确省入口
冒号后面的是表示ALL方式下需要做的事, 即编译生成demo.exe

>> demo.res:demo.rc
>> rc -r -i/borlandc/include demo.rc
表示如何生成demo.res文件, 相关的文件是冒号后面的文件demo.rc, 编译的方法是
rc -r -i/borlandc/include demo.rc

>> demo.obj:demo.c demo.h
>> bcc -c -w-par -p -w -2 test.c
>> demo.exe:demo.obj demo.def demo.res
>> tlink /n /Tw /L/borlandc/lib cOws demo,demo,NUL,import mathws cws,demo
>> rc -t demo.res
意义同上.

>> 2.主程序的.def 文件中最后原来是EXPORTS windowsfun,
>> 当在主程序中加入dll后,dll文件的.de文件尾部是EXPORT pro1 @1和pro2 @2,
>> (@表示什么?)而此时主程序中该位置却改成了IMPORT:pro1 @1和pro2 @2字段,
>> 这部分所定义的函数是什么意思?
pro1@1, pro2@2中1, 2, 表示该函数的参数总字节数, 1=1个字节的参数; 2=2个字节, 可以是2个char,
也可以是1个word

>> 为什么书上说windows只有根据_export来确认回叫函数?
哪本书这么误人子弟??? 都可以的

>> 因为“回叫”与“输出”(EXPORTS)有什么关系?
如果"回叫"是callback的意思的话, 两者是没有太大关系的.
建议你先好好理解一下Windows中的函数定义方法, 参考MSDN

>> 主程序中加dll后,怎么把这个EXPORTS段也改成IMPORT:pro1 @1和pro2 了?
对主程序来说, pro1和pro2是在DLL中实现的, 而主程序只是调用它们,
所以需要先IMPORT进来.

>> 原来的设定怎么办?dll中的设EXPORT pro1 @1和pro2 @2表示pro1和pro2是回叫函数吗?
原来的设定无所谓的, EXPORT中的函数名表示函数是输出函数,
即可以别别的程序调用的DLL中的函数

>> 可以有自定义的回叫函数吗?
当然可以了.

>>一片糨糊!!
不分行的话的确是糨糊. ^_*

>> 3、int winmain(...)返回int型,dos下就不需要嘛,它为什么要返回?返回给哪里?什么作用?
DOS下其实也是需要的, 只是一般习惯用void main()而已, 不过这可不是好习惯

返回值的作用是告诉调用该程序的进程(dos或Windows或是其他的应用程序等)程序终止的状态, 以及执行程序后的结果.
比如DOS下的choice函数, 执行后的返回值表示用户的按键的ASCII码, 而有的程序则用返回值
非0来表示错误. 比如在DOS下, 可以访问系统变量ERRORLEVEL来得到返回值
 
接受答案了.
 
后退
顶部