3 .net dll linker shared-libraries
我正在编译一个针对x86-64的.NET应用程序; 但是,该应用程序引用了一个32位的dll.可执行文件编译正常,但Visual Studio会发出警告:
引用的asseble'path/to/dll'针对的是与应用程序不同的处理器.
现在,我的理解是您不能简单地将64位可执行文件链接到32位共享库..NET(或Windows?)使用什么黑魔法来实现这一目标?
当针对x86和x86-64构建应用程序时,我注意到了相当大的内存占用差异.当动态加载32位dll并开始处理时,64位应用程序的内存占用量将大约增加60 MB(64位为250 MB,而32位为190 MB),而应用程序的内存占用量为32比特应用程序.但是,当dll中的某个代码路径被命中时,这种差异才会很大,不幸的是,我无法查看dll以查看内部.
如何将64位二进制文件链接到32位共享库?32位ABI不会阻止这种情况吗?
当应用程序编译为x86-64架构时,为什么内存占用量会有如此大的差异?
任何其他信息,以解释这一点将不胜感激.
x86和x64无法加载到同一进程中.您确定该引用不是AnyCPU程序集,或者32位引用在GAC中没有64位或AnyCPU版本吗?
另请注意,在64位Windows上,System32中的DLL为64位.32位的是在SysWOW64中.
| 归档时间: |
|
| 查看次数: |
3312 次 |
| 最近记录: |