我最近搬到了Windows 8.1 x64,现在我无法从Windows 7 x32次调试我的旧代码。因为我正在使用x32操作系统的DLL文件。是否有适配器或其他东西来避免这种障碍?
例如x32的sqlite3(System.data.SQlite.dll)可以在x32上调试,但在我的计算机上我不能再调试了。
答案 0 :(得分:0)
如果您转到x64
操作系统,那么您的.net进程现在可能选择以x64
模式运行。如果是这种情况,那么你不能在64位进程中使用32位库(我希望你得到InvalidImageFormatException
,但我不熟悉你提到的解析一个)。您可以在任务管理器中查看您的进程是32位还是64位,以确认是否属实。
此时,如果确认,您有两个选择:
答案 1 :(得分:0)
不确定这是否是这种情况,但是一旦x86 C#项目无法在x64上运行,我就遇到了类似的问题。问题是 Any CPU 设置。
首先, Any CPU 设置似乎是逻辑情况:毕竟,它意味着可以在x86和x64架构上运行。问题在于共享DLL。如果EXE是在 Any CPU 模式下编译的,则DLL是在 x86 模式下编译的。
当你在x86操作系统上运行它时,EXE在x86模式下执行(这是该架构中唯一的选项),DLL在x86模式下执行(因为它是这样编译的),一切正常。
但是当你在x64操作系统上运行它时,EXE在x64模式下执行 - 因为它是任何CPU ,所以你的操作系统可以在x64模式下运行它。但是DLL无法在x64模式下加载(它没有任何加载),因此我们遇到冲突并且无法加载。
假设您无法为所有DLL获取任何CPU 或x64版本,那么简单的解决方案是在x86模式下编译主EXE,以便在x64系统上强制进行x86仿真。