【问题标题】:OpenGL/GLEW: Unresolved external _glewInitOpenGL/GLEW:未解析的外部 _glewInit
【发布时间】:2012-02-29 23:49:01
【问题描述】:

我无法让 GLEW 与我的程序正确链接。

我的项目中的路径正确(我已经三次检查),我尝试使用 x86 库(全部 4 个 - -s、-mxs 等)和 x64 库从头开始构建。

我尝试使用#pragma 指令而不是在属性中配置我的项目。

我正在尝试将其作为静态库获取,因此不需要 DLL。

按照构建说明的建议,我还定义了 GLEW_STATIC。

错误信息:

OGLInit.obj:错误 LNK2019:未解析的外部符号 _glewInit@0 在函数“bool __stdcall vexal::OGLStartup(void)”中引用 (?OGLStartup@vexal@@YG_NXZ)

我什至用dumpbin 来检查initGlew 是否存在。它是,而且是外部的。

我还验证了它找到了库。

搜索 C:\Users\Jake\Documents\Vexal2\vexal\vc9_x86\lib\Debug\GLEW.lib:

我的想法已经用完了。有什么帮助吗?

【问题讨论】:

  • 您是否 100% 确定您链接的是静态 glew 库而不是“导入”库(实际上只是充当 dll 的代理)?
  • 是的。我使用 glew_static 项目重建了它。

标签: c++ opengl unresolved-external glew


【解决方案1】:

问题在于调用约定。我将调用约定设置更改为 __stdcall 而不是 __cdecl,在我拥有的 GLFW 代码中将 _glfwTerminate_atexit( void ) 更改为 __cdecl,然后构建。

已修复!

【讨论】:

    【解决方案2】:

    是的。我使用 glew_static 项目重建了它。

    仅仅因为您构建了该项目并不意味着您正在链接到它。

    C:\Users\Jake\Documents\Vexal2\vexal\vc9_x86\lib\Debug\GLEW.lib

    那不是静态 GLEW 库。那是 GLEW 的 DLL 版本的导入库。静态 GLEW 库称为 GLEW32s.lib。链接到那个。

    【讨论】:

    • 好的,创建了这些库。不仅将 DLL 添加到解决方案目录,还添加到项目目录和调试目录。仍然出现同样的错误。
    • 您应该链接到 DLL。您正在构建 static GLEW,而不是 DLL 版本。如果您想将 GLEW 用作 DLL,则必须取出您的 GLEW_STATIC 定义。
    • 这就是我一直在做的事情- 我在项目中定义了 GLEW_STATIC 并构建了它,生成了 GLEW.lib(这是我告诉它要做的)。跨度>
    猜你喜欢
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2020-02-11
    • 1970-01-01
    • 2013-06-29
    • 1970-01-01
    • 2016-08-08
    • 2015-08-17
    相关资源
    最近更新 更多