两种方法保证所用的
DLL
有不同的地址空间:
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 目录下),绑定工具不会有任何的副作用