我已经使用默认包安装了 VSCode 和 GO 扩展。 我的项目需要加载一个 32 位 DLL。当我使用 F5 启动项目时,我在 syscall.LoadLibrary() 上收到错误 193。
我在互联网上发现,当有人试图在 64 位 arch 上加载 32 位 DLL 时,通常会发生错误。
我认为如果我使用 GOARCH=386 进行调试,我将能够加载 DLL。但每次我尝试使用 GOARCH=386 执行时,我都会在 VSCode 上收到错误消息,提示该架构不受支持。
需要帮助。
最佳答案
(我假设 64 位 DLL 是遥不可及的)
64 位进程无法将 32 位模块加载到其进程空间,32 位进程也无法将 64 位模块加载到其进程空间。在 32 位和 64 位模块之间进行通信的唯一方式是通过进程间通信 (IPC)。 Microsoft 建议您使用进程间 COM 将 32 位代码用于 64 位应用程序。 Here's an article explaining the process .太丑了。
如果您认为没问题,请将您的项目构建到 X86 平台(32 位)。这样 ehlapi32.dll
就可以兼容并解决问题。您的 32 位软件在 64 位平台上仍然受支持,因为 32 位进程可以在 64 位 Windows 操作系统上执行。
--
- 我熟悉 C++,但完全不熟悉 GO。我不知道如何(或者如果有的话)在 GO 中实现该技术。
关于visual-studio - 如何使用 VSCode 在 GOARCH=386 的 64 位 GO 项目上使用 32 位 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51954745/