在VC ++中引用静态库

时间:2013-06-18 09:55:15

标签: c++ c visual-c++

我正在尝试将this库静态链接到我的VS C ++项目中。首先我将源代码编译为静态库。通过VS Project属性将其链接。.exe项目工作正常。然后我读了{{ 3}}关于如何将静态库编译成可执行文件的MS手册,并按照现在的步骤进行操作,如果我正在运行可执行文件我会收到这些错误:

Error   3   error LNK2019: unresolved external symbol __imp__glBlendFunc@8
referenced in function _text_buffer_render  E:\Documents\visual studio
2012\Projects\XXXXEngine\FreeTypeTest\text-buffer.obj

Error   4   error LNK2019: unresolved external symbol __imp__glBindTexture@8
referenced in function _text_buffer_render  E:\Documents\visual studio
2012\Projects\XXXXEngine\FreeTypeTest\text-buffer.obj

对我而言,似乎GLEW.lib错误。这是否意味着我必须静态链接glew.lib,因为freetype GL依赖于它? 另外,我可以将lib与可执行文件一起使用而不将其添加到引用中,或者它在发布版本中不起作用吗?我问它,因为我对如何进行静态链接感到很困惑。我的意思是,现在是可执行文件在没有将库添加到项目引用的情况下工作。那么为什么它不能像这样使用呢?

2 个答案:

答案 0 :(得分:1)

您是否尝试过对您的图书馆进行标记? 像这样: #pragma comment(lib, "any.lib");

答案 1 :(得分:1)

  

对我而言,似乎是GLEW.lib错误

它们不是,glBindTexture()是一个OpenGL函数。 MSDN库页面is here。滚动到底部,它会显示声明它的.h文件(由于编译器没有抱怨,你已经是正确的)和你需要链接的.lib。

右键单击项目,“属性”,“链接器”,“输入”,“其他依赖关系”设置。添加opengl32.lib。或者要使用upvoted答案的建议,您可以在源代码中注入链接器指令:

#include <gl\gl.h>
#pragma comment(lib, "opengl32.lib")