使用 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 中的所有内容,从而导致一串错误。
我尝试将 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 中的所有内容,从而导致一串错误。