visual-studio - 如何使用 VSCode 在 GOARCH=386 的 64 位 GO 项目上使用 32 位 DLL

标签 visual-studio go dll x86 64-bit

我已经使用默认包安装了 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/

相关文章:

c# - VS 如何在创建新方法时自动添加自定义代码片段?

file - 如何在Go中附加到文件的开头?

java - 64 位 java 应用程序使用 32 位 dll

go - 如何在 macOS 上的 logrus/lumberjack 中自动重新创建日志文件

c# - 在 C# 中使用 webkit 库的问题

c++ - 从 VBA 调用 DLL

visual-studio - 如何使 Visual Studio 编辑器停止滚动到文件底部?

javascript - IntelliSense JavaScript 引用的最佳实践

windows - 如何在 Visual Studio 中为 xamarin.forms 应用程序生成 .ipa 文件

multithreading - 为什么这段代码没有达到竞争条件?