1. 使用VC重定位工具(VC/BIN),在编译完成后使用。
首先,在工程中新建一个文本文件Rebase.txt,如:
MyApp.exe
MyDll1.dll
MyDll2.dll
MyDll3.dll
然后,使用重定位命令重定位.dll
rebase –b 40000 –R C:/projects/projectRoot/debug –G Rebase.txt
也可以在工程中的选择post_build step标签上的post_build Command选项。
2. 显示的为每个dll设置一个唯一的基地址。
工程设置中,在Link标签的Output类中对Base address项进行设置,避免使用dll的默认基址0x10000000
一旦重定位了dll,还必须使用VC的bind工具(Command/tools目录下),绑定工具不会有任何的副作用
本文介绍了两种确保DLL在不同地址空间运行的方法:一是利用VC重定位工具调整;二是显式设置每个DLL的独特基地址。通过这两种方式可以有效避免DLL间的地址冲突。
1362

被折叠的 条评论
为什么被折叠?



