【发布时间】:2022-01-01 22:19:30
【问题描述】:
我在 Windows/mingw64 上并尝试使用 C 应用程序中的 Binaryen C API 生成 Web 程序集。我编译了binaryen共享库libbinaryen.dll没有问题,并试图重现hello world example。它按预期编译和执行,但在退出 main() 时挂起,return 和 exit() 都存在。
我认为异常处理可能有问题,因为 Binaryen DLL 是 C++,但无论我编译和链接 gcc 还是 g++,我都看到 main() 退出时出现相同的挂起。有趣的是,如果我将 Binaryen 编译为静态链接库 (libbinaryen.a) 并将其链接到我的可执行文件,问题就会消失,但这需要使用 g++ 进行编译。它会生成一个 16Mb 的可执行文件,所以我宁愿不这样做。
我正在使用 Mingw 版本 x86_64-posix-seh-rev0、gcc 8.1.0,并与 -lmingw32 -lbinaryen 链接。我尝试过直接链接到 DLL 和链接库,结果相同。
我猜这里的 C/C++ 互操作性存在一些问题,但不知道是什么问题。该问题还导致gdb 在main() 退出时挂起,因此我无法准确指出发生了什么。
有人在 mingw 上从 C 调用 C++ DLL 时看到这种行为吗?
【问题讨论】:
标签: webassembly mingw-w64