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 中未定义
...
当我找到解决方案时,在这里回答我自己的问题。事实证明<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 中的所有内容,从而导致一系列错误。