我正在编译一款针对x86-64的.NET应用程序; 然而,该应用程序引用了一个32位dll。可执行文件编译正常,但Visual Studio会抛出一个警告:
“所引用的程序集'path/to/dll'面向的处理器与应用程序不同。”
目前我的理解是,你无法简单地将64位可执行文件链接到32位共享库。.NET(或Windows?)使用了什么黑科技来实现这一点呢?
当应用程序构建为x86和x86-64时,内存占用有显著差异。当32位dll被动态加载并开始处理时,64位应用程序的内存占用量将比32位应用程序大约60 MB(64位为250MB,32位为190MB)。 但是,只有在命中dll中的某个代码路径时才会产生这样巨大的差异,我不能查看dll的内部情况。究竟如何使64位二进制文件连接到32位共享库?32位ABI是否阻止了这种操作?
为什么在将应用程序编译为x86-64体系结构时会有如此大的内存占用差异?
如果有其他信息可以解释这一点,将不胜感激。
“所引用的程序集'path/to/dll'面向的处理器与应用程序不同。”
目前我的理解是,你无法简单地将64位可执行文件链接到32位共享库。.NET(或Windows?)使用了什么黑科技来实现这一点呢?
当应用程序构建为x86和x86-64时,内存占用有显著差异。当32位dll被动态加载并开始处理时,64位应用程序的内存占用量将比32位应用程序大约60 MB(64位为250MB,32位为190MB)。 但是,只有在命中dll中的某个代码路径时才会产生这样巨大的差异,我不能查看dll的内部情况。究竟如何使64位二进制文件连接到32位共享库?32位ABI是否阻止了这种操作?
为什么在将应用程序编译为x86-64体系结构时会有如此大的内存占用差异?
如果有其他信息可以解释这一点,将不胜感激。