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

unresolved external symbol glewExperimental

提问人:sakura 提问时间:3/21/2018 最后编辑:genpfaultsakura 更新时间:5/20/2023 访问量:1280

问:

我正在尝试使用 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;
      }
 }
C++ OpenGL GLEW 未解析的外部

评论

0赞 Smit Ycyken 3/21/2018
您是否检查了所有常见问题
0赞 sakura 3/21/2018
是的,我检查并放置了所有 glew 库并链接了 glew32.lib,但不知道为什么会出现这个错误
0赞 Smit Ycyken 3/21/2018
编译器、平台呢?
0赞 sakura 3/21/2018
是的,我使用 VS2015 为 64 位 Windows 编译了库,并在 64 位项目下使用
1赞 n. m. could be an AI 5/19/2023
“我还确保 glew 正确链接。”这不是你声称的。你展示了你做了什么,让我们自己看看它是否是正确的链接。

答:

-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 以避免冲突