Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio LNK2019 glewInit_Visual Studio_Opengl_Linker Errors_Unresolved External - Fatal编程技术网

Visual studio LNK2019 glewInit

Visual studio LNK2019 glewInit,visual-studio,opengl,linker-errors,unresolved-external,Visual Studio,Opengl,Linker Errors,Unresolved External,我有glew版本1.9.0,我把所有的头文件放在MSVS include目录中,把所有的库文件放在lib文件夹中。然后,我将dll放在sysWOW64文件夹中,并在项目属性下的其他依赖项中添加了所需的所有LIB,它们是: opengl32.lib glu32.lib glut32.lib glew32.lib glew32mx.lib glew32s.lib glew32mxs.lib 然而,我得到一个链接器错误 错误1错误LNK2019:未解析的外部符号_glewInit@0在函数\u m

我有glew版本1.9.0,我把所有的头文件放在MSVS include目录中,把所有的库文件放在lib文件夹中。然后,我将dll放在sysWOW64文件夹中,并在项目属性下的其他依赖项中添加了所需的所有LIB,它们是:

  • opengl32.lib
  • glu32.lib
  • glut32.lib
  • glew32.lib
  • glew32mx.lib
  • glew32s.lib
  • glew32mxs.lib
然而,我得到一个链接器错误

错误1错误LNK2019:未解析的外部符号_glewInit@0在函数\u main C:\Users\x\documents\visual studio 2013\Projects\openGLTest\openGLTest\main.obj openGLTest中引用


首先,您不应将DLL放入
sysWOW64
或任何其他操作系统拥有的目录,如
System32
。也就是说,这与DLL的放置位置无关,与链接到的库(或者说没有链接到的库)无关

您也不应链接到4种不同的GLEW配置:

  • 动态(glew32)
  • 动态多上下文(glew32mx)
  • 静态(glew32s)
  • 静态多上下文(glew32mxs)
  • 最好的链接库通常是
    glew32s.lib
    ,因为它首先否定了对DLL的需要,但随后需要在
    之前添加
    #define GLEW_STATIC
    #包括“GLEW.h”

    在MSVC中,您可以将以下内容添加到源文件中,以便一次处理所有这些内容:
    #pragma注释(lib,“glew32s.lib”)
    #定义GLEW_静态
    #包括“glew.h”
    
    我找到了这个问题的解决方案:

    • 包括头文件:

    • 右键单击
      project>Properties>Configuration>C/C++>General>additionalinclude目录
    • 在右侧下拉列表中,单击
    • 已出现其他Inclue目录
    • 单击
      新行图标>浏览按钮
      ,然后选择glew包含文件夹:
      $(您的glew路径)\glew-1.12.0\include
    • 包括图书馆

    • 右键单击项目
      >属性>配置属性>链接器>常规>其他库目录
    • 单击
    • 出现了附加库目录
    • 对于64位版本:添加
      $(您的glew路径)
      \glew-1.12.0\lib\Release\x64
    • 对于32位版本:添加
      $(您的glew路径)\glew-1.12.0\lib\Release\Win32
    • 右键单击项目(再次)
      >属性>配置属性>链接器>输入>其他依赖项
    • 单击
    • 其他依赖项
      窗口已出现
    • 单击白色区域并写入
      glew32.lib

    (旁注:接受的答案并没有解决问题)

    Hi@Andon我执行了您所说的,但是我仍然收到相同的错误您是否删除了最初作为依赖项使用的4个不同的GLEW库?如果您真的尝试链接到所有4个,它们将创建符号冲突。我将Glew32保留在依赖项中,但删除了其他的。我是否也应该删除GLEW32?我还添加了您刚才提到的代码,但这并没有解决所有问题。是的,不要将头或库放在MSVC的目录中。将它们放在相对于项目根目录的目录中。我在自己的软件中使用
    /platform/OpenGL/glew32s.lib
    /platform/OpenGL/glew.h
    。在MSVC中,我有
    #pragma注释(lib,“platform/OpenGL/glew32s.lib”)
    #include“platform/OpenGL/glew.h”
    。你可以使用任何你想要的约定,但这就是我用来存储平台/子系统特定的头文件和库的方法,而不需要额外的安装步骤来修改你的MSVC安装。我会试试看,只是我遵循了这篇文章中的第二个建议。我用过量来做这件事,但似乎没有用glew