哪个高手能讲一下MFC的DLL是如何关联到MFC程序当中的

时间:2021-06-07 00:18:52
如果当前有一个类似MFC的特定应用的框架,我应该怎么在VC中用上去呢?
MFC的那个dll是不是在程序的PE头里就指定了的?

13 个解决方案

#1


PE头里 ?
dll 都是 程序运行的时候,系统负责载入的!

#2


你的问题不是一个啊
可以开两个帖子了

第一个是特定框架的用法吧?


第二个问的是DLL根据什么载入的?

#3


第二个问题是PE格式说明的,
好像是在Import表里指定的

#4


第一个,如果真的是框架的话,比较简单

利用框架提供的向导(一般都有)生成程序雏形;
看帮助,填写必要的函数


#5


不好意思,程序二进制格式我不是很清楚,我只想问:
1. 程序系统相关的DLL是怎么load进来的,系统怎么判断需要load哪些dll?
2. 我有一个框架的代码,是别人写好的,我很奇怪他的DLLMain怎么早于app的main先运行了?
能不能详细解释一下?分数我可以再加,能说清楚的就给分。

#6


导入lib文件就可以了,自动隐式载入

#7



1.   程序系统相关的DLL是怎么load进来的,系统怎么判断需要load哪些dll? 

到看雪去问吧! 那些做破解的比较清楚!
你相当于再问windows 的peloader是怎么工作的!

#8


我觉得jameshooo讲得有道理。不过我也没在工程属性里看到程序导入了什么lib呀?

#9


楼主还是不知道自己再问什么
你问的并不是你想知道的
注意表述清楚

#10


每个PE文件都有两个表“Exports”,"Imports"这两个表中存储着该PE文件所需要的导入文件,导出符号(包括RAA,OFFSET)等重要数据,但是PELOADER每次在输入的时候会进行“重定位改写”也就是PE文件中的信息只是参考信息。 

#11


好吧,我再说的明白点,我不需要知道PE是什么东西,我只要知道MFC的DLL是不是在程序生成的时候就确定了(反之,那是由系统在程序运行时才确定的吗)?至于PE还是manifest还是别的,我倒是不关心。
另外,结合我现在的碰到的问题,我想知道,MFC的DLL是如何引入win32的程序的?通过lib?

#12


1。生成就确定
2。用VC MFC就引入了MFC DLL,不用指定

#13


  当程序员通过隐式调用方式编译生成应用程序时,应用程序中的调用函数与LIB文件中导出符号相匹配,这些符号或标识号被写入到生成的EXE文件中。
  LIB文件中也包含了对应的DLL文件名(但不是完全的路径名),链接程序也将其存储在EXE文件内部。
  当应用程序运行过程中需要加载DLL文件时,Windows根据这些信息发现并加载DLL,然后通过符号名或标识号实现对DLL函数的动态链接。所有被应用程序调用的DLL文件都会在应用程序EXE文件加载时被加载在到内存中。

#1


PE头里 ?
dll 都是 程序运行的时候,系统负责载入的!

#2


你的问题不是一个啊
可以开两个帖子了

第一个是特定框架的用法吧?


第二个问的是DLL根据什么载入的?

#3


第二个问题是PE格式说明的,
好像是在Import表里指定的

#4


第一个,如果真的是框架的话,比较简单

利用框架提供的向导(一般都有)生成程序雏形;
看帮助,填写必要的函数


#5


不好意思,程序二进制格式我不是很清楚,我只想问:
1. 程序系统相关的DLL是怎么load进来的,系统怎么判断需要load哪些dll?
2. 我有一个框架的代码,是别人写好的,我很奇怪他的DLLMain怎么早于app的main先运行了?
能不能详细解释一下?分数我可以再加,能说清楚的就给分。

#6


导入lib文件就可以了,自动隐式载入

#7



1.   程序系统相关的DLL是怎么load进来的,系统怎么判断需要load哪些dll? 

到看雪去问吧! 那些做破解的比较清楚!
你相当于再问windows 的peloader是怎么工作的!

#8


我觉得jameshooo讲得有道理。不过我也没在工程属性里看到程序导入了什么lib呀?

#9


楼主还是不知道自己再问什么
你问的并不是你想知道的
注意表述清楚

#10


每个PE文件都有两个表“Exports”,"Imports"这两个表中存储着该PE文件所需要的导入文件,导出符号(包括RAA,OFFSET)等重要数据,但是PELOADER每次在输入的时候会进行“重定位改写”也就是PE文件中的信息只是参考信息。 

#11


好吧,我再说的明白点,我不需要知道PE是什么东西,我只要知道MFC的DLL是不是在程序生成的时候就确定了(反之,那是由系统在程序运行时才确定的吗)?至于PE还是manifest还是别的,我倒是不关心。
另外,结合我现在的碰到的问题,我想知道,MFC的DLL是如何引入win32的程序的?通过lib?

#12


1。生成就确定
2。用VC MFC就引入了MFC DLL,不用指定

#13


  当程序员通过隐式调用方式编译生成应用程序时,应用程序中的调用函数与LIB文件中导出符号相匹配,这些符号或标识号被写入到生成的EXE文件中。
  LIB文件中也包含了对应的DLL文件名(但不是完全的路径名),链接程序也将其存储在EXE文件内部。
  当应用程序运行过程中需要加载DLL文件时,Windows根据这些信息发现并加载DLL,然后通过符号名或标识号实现对DLL函数的动态链接。所有被应用程序调用的DLL文件都会在应用程序EXE文件加载时被加载在到内存中。