引用vc++中的静态库

Referencing static library in VC++

本文关键字:静态 vc++ 引用      更新时间:2023-10-16

我正在尝试静态链接这个库到我的vsc++项目。首先,我将源代码编译为静态库。通过VS项目属性链接。.exe项目工作正常。然后我读了这本关于如何将静态库编译成可执行文件的MS手册,并按照那里列出的步骤进行操作,如果我正在运行可执行文件,我就会得到这些错误:

Error   3   error LNK2019: unresolved external symbol __imp__glBlendFunc@8
referenced in function _text_buffer_render  E:Documentsvisual studio
2012ProjectsXXXXEngineFreeTypeTesttext-buffer.obj
Error   4   error LNK2019: unresolved external symbol __imp__glBindTexture@8
referenced in function _text_buffer_render  E:Documentsvisual studio
2012ProjectsXXXXEngineFreeTypeTesttext-buffer.obj

对我来说,它似乎是GLEW。自由的错误。这是否意味着我必须链接也发光。lib静态的自由类型GL取决于它?此外,我可以只使用库与可执行文件而不将其添加到引用,或者它不会在发布构建?我问它,因为我很困惑静态链接应该如何做。我的意思是,现在可执行文件无需将库添加到项目参考中即可工作。那为什么不能这样用呢?

对我来说,它似乎是GLEW。自由错误

它们不是,glBindTexture()是一个OpenGL函数。MSDN库页面在这里。滚动到底部,它显示了声明它的.h文件(您已经正确了,因为编译器没有抱怨)和您需要链接的.lib。

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

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

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