我有一个 F#.NET 解决方案,其中一个项目在 VS 2013 中包含一些托管 C#.NET 和非托管 C++ DLL 引用。
该解决方案在 32 位 Windows 7 Enterprise 下的 FSI 中完美运行。但是,如果我将解决方案中的所有内容复制到具有 64 位 Windows 8.1 操作系统的计算机上,并保持引用的 DLL、文件等的所有相对和绝对路径相同,FSI 会给我
System.DllNotFoundException: Unable to load DLL 'dllName': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
非托管 C++ DLL 的错误命名dllName
是解决方案的一部分,被复制,存在,被引用。
dllName
在 \x64 和 \x86 文件夹下有 32 位和 64 位版本。它们都被引用,被复制并且在那里。项目属性在 32 位操作系统和 64 位操作系统上是相同的。我还尝试了 Properties -> Debug 的 Configuration 和 Platform settings 的所有可能组合,以及 Properties -> Build 在 64 位 OS 下的 Configuration、Platform 和 Platform target 设置,但无济于事。
我想以某种方式出现Fsi.exe (32-bit)
在任务管理器中的 FSI -> 64 位操作系统中的进程,但Fsi.exe
在 32 位操作系统中,是在我没有触及任何东西的情况下在 64 位环境中搞乱我的 32 位应用程序的罪魁祸首解决方案的一部分。