多实例外部引用如何进行编译链接?
在使用一些没有入档的函数时,比如 RegisterShellHookWindow() 这样的 user32.dll 中的函数,一般提供的 inc 和 lib 文件中并没有定义它。使用 LoadLibrary()/GetProcAddress() 的话,又比较麻烦。自己创建 inc/lib 文件,在使用 Masm32v7 和 vc6 的链接程序时,生成的最后的可执行程序,只有一个对 user32.dll 的引用是完整的,其它的模块名部分是空白。具体表现就是在 Exescope 这样的资源软件里,在 IMPORT 节只能看到一个对 user32.dll 的引用;用 Ollydbg 载入程序的话,另外的对 user32.dll 中函数的引用,只有函数名,没有 user32.dll 模块名,所以实际上对引用地址的修正也就没能完成。无疑,这样的程序是不能使用的。
我看到其实有不少的程序中对同以模块的多实例引用。比如手头的 Foxmail4 的主程序 Foxmail.exe,对 kernel32.dll 有 3 组引用;对 advapi32.dll 和 oleaut32.dll 及 user32.dll 都有 2 例引用。
所以有些不明白这样多例引用是如何创建的,编译/链接程序有特殊选项吗?
谢谢!
下面这个资源链接就是 Foxmail 的 IMPORT 节的截图
http://download.csdn.net/source/1987586
我看到其实有不少的程序中对同以模块的多实例引用。比如手头的 Foxmail4 的主程序 Foxmail.exe,对 kernel32.dll 有 3 组引用;对 advapi32.dll 和 oleaut32.dll 及 user32.dll 都有 2 例引用。
所以有些不明白这样多例引用是如何创建的,编译/链接程序有特殊选项吗?
谢谢!
下面这个资源链接就是 Foxmail 的 IMPORT 节的截图
http://download.csdn.net/source/1987586
...全文
相关推荐
maven项目引用外部jar包的方法
本篇文章主要介绍了maven项目引用外部jar的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
vue引用外部JS的两种种方法
主要介绍了vue引用外部JS的两种种方案,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
c++内部链接与外部链接
对内部链接和外部链接的详解,理解下很有用
[CMake教程] 引用外部链接库
[CMake教程] 引用外部链接库 博客示例代码 博客地址:https://blog.csdn.net/maizousidemao/article/details/104096345
在vs2010中链接外部的库设置
VC6.0中要引用外部程序库时一般需要用到lib文件和dll文件。这边文章综合了一下网络上面的关于lib文件和dll文件的描述,以便以后回顾用。 1,两种链接方式 1) 静态链接。静态链接是在链接时由链接器将库中的内容(数据和代码)加入到程序中的做法。 链接器是一个独立的程序,它的作用是将不同的库或者目标文件链接到一起生成一个可执行文件。为了构造可执行文件,链接器必须完成


