未解析的外部符号 glew实验性

unresolved external symbol glewExperimental

本文关键字:符号 glew 实验性 外部      更新时间:2023-10-16

我正在尝试使用 glew 创建一个窗口,但我收到此链接错误。我也尝试自己编译库,但也没有用。我还确保 glew 正确链接。

下面是导致错误的代码:

if (configuration.api == API::OpenGL) {
static bool sGLEWInitialized;
if (!sGLEWInitialized) {
glfwMakeContextCurrent(handle);
#if WINDOWS
glewExperimental = true;
auto error = glewInit();
if (error) {
destroy_glfw_window(handle);
throw std::runtime_error("Failed to initialize GLEW");
}
#endif
sGLEWInitialized = true;
}
}

使用 glew32s.lib glew32.lib 从 glew-2.1.0-win32\glew-2.1.0\lib\Release\x64 不 glew-2.1.0\lib\Release\Win32

我的回答晚了几年,但如果它不再与作者相关,它可能会帮助其他人。这个解决方案对我有用:

1. 如果您使用vcpkg则需要确保安装库的静态版本。使用命令行并执行以下操作:

vcpkg.exe install glew:x64-windows-static

如果您使用的是 32 位版本,则应相应地将 x64 替换为 x86。

2.然后在<PropertyGroup Label=”Globals”>部分底部的.vcxproj中,您需要添加以下行

<VcpkgTriplet Condition="'$(Platform)'=='x64'">x64-windows-static</VcpkgTriplet>

同样,如果你有一个 32 位平台,你的生产线看起来会有所不同:

<VcpkgTriplet Condition="'$(Platform)'=='Win32'">x86-windows-static</VcpkgTriplet>

之后,您将能够在代码中使用库的静态版本。但是,请注意,将行添加到.vcxproj后,您将无法使用 vcpkg 中其他库的非静态版本。在此处阅读更多内容。

3. 在glew的情况下,还需要在包含库之前添加#define GLEW_STATIC指令

4.此外,您可能需要将构建编译选项更改为/MTd以避免冲突