使用 Visual Studio 将 Julia 嵌入到 C++ 中

nie*_*els 1 c++ windows embedding julia

我尝试将 Julia v1.4.2 嵌入到使用 Visual Studio 2017 v15.0 构建的简单 C++ 控制台应用程序中。我遵循https://docs.julialang.org/en/v1/manual/embedding/#High-Level-Embedding-on-Windows-with-Visual-Studio-1上的官方文档。然而,当输入 #include <julia.h> VS 时,会出现一系列超过 25 个错误,例如:

errhandlingapi.h 中未定义标识符“PCONTEXT”

标识符“PCONTEXT”在 WinBase.h 中未定义

标识符“PSLIST_HEADER”在 WinBase.h 中未定义

...

nie*_*els 5

当我找到解决方案时,在这里回答我自己的问题。事实证明<uv.h>- 这是 Julia 的一部分 - 必须包含在之前<windows.h>

这是因为 uv.h 包含 uv/win.h,而 uv/win.h 又包含 Winsock2.h。而且winsock2.h 防止包含windows.h 包含的winsock.h。但是,如果首先包含 windows.h 并进而包含 Winsock.h,则 Winsock2.h 将尝试重新定义 Winsock.h 中的所有内容,从而导致一系列错误。