提问人:sakura 提问时间:3/21/2018 最后编辑:genpfaultsakura 更新时间:5/20/2023 访问量:1280
未解析的外部符号 glew实验性的
unresolved external symbol glewExperimental
问:
我正在尝试使用 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;
}
}
答:
-1赞
user13568090
5/18/2020
#1
用 glew32s.lib glew32.lib 从 格鲁-2.1.0-win32\格鲁-2.1.0\lib\发布\x64 不 glew-2.1.0\lib\Release\Win32
-1赞
Unable error
5/19/2023
#2
我的回答是晚了几年,但如果它不再与作者相关,它可能会帮助其他人。这个解决方案对我有用:
1. 如果您使用 vcpkg
,则需要确保安装库的静态版本。使用命令行并执行类似操作:
vcpkg.exe install glew:x64-windows-static
如果您使用的是 32 位版本,则应相应地将 x64 替换为 x86。
2. 然后在.vcxproj
中,在 <PropertyGroup Label=“Globals”>
部分的底部,您需要添加以下行:
<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
以避免冲突
评论