使用 Visual Studio 在 C++ 中嵌入 Julia

Embedding Julia in C++ using Visual Studio

我尝试将 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+错误中爆炸,例如:

identifier "PCONTEXT" is undefined in errhandlingapi.h

identifier "PCONTEXT" is undefined in WinBase.h

identifier "PSLIST_HEADER" is undefined in WinBase.h

...

在这里回答我自己的问题,因为我找到了解决方案。 结果 <uv.h> - 这是 Julia 的一部分 - 必须包含在 <windows.h>.

之前

这是因为 uv.h 包括 uv/win.h,其中包括 winsock2.h。 winsock2.h 防止包含 windows.h 包含的 winsock.h。但是如果 windows.h 从而首先包含 winsock.h,那么 winsock2.h 将尝试重新定义 winsock.h 中的所有内容,从而导致一串错误。