用Visual Studio在C++中嵌入Julia

Embedding Julia in C++ using Visual Studio

本文关键字:Julia C++ Visual Studio      更新时间:2023-10-16

我尝试将Julia v1.4.2嵌入到使用Visual Studio 2017 v15.0构建的简单C++控制台应用程序中。我遵循官方文档https://docs.julialang.org/en/v1/manual/embedding/#High-水平嵌入-窗口-与视觉研究-1。但是,在键入时#include <julia.h>VS在一系列25+错误中爆炸,例如:

标识符"PCONTEXT";在errhandlingapi.h 中未定义

标识符"PCONTEXT";在WinBase.h 中未定义

标识符"PSLIST_ HEADER";在WinBase.h 中未定义

。。。

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

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