1

我正在尝试将此库静态链接到我的 VS C++ 项目中。首先我将源代码编译为静态库。通过 VS 项目属性链接它。.exe 项目工作正常。然后我阅读有关如何编译静态的 MS 手册lib 到可执行文件中,如果我正在运行可执行文件,则按照现在概述的步骤操作,我会收到以下错误:

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与可执行文件一起使用而不将其添加到引用中,或者它在发布版本中不起作用吗?我问它是因为我对如何完成静态链接感到非常困惑。我的意思是,现在可执行文件无需将库添加到项目引用中即可。那为什么不能像这样使用它呢?

4

2 回答 2

1

对我来说,这似乎是 GLEW.lib 错误

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

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

#include <gl\gl.h>
#pragma comment(lib, "opengl32.lib")
于 2013-06-18T11:30:04.530 回答
1

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

于 2013-06-18T10:05:39.853 回答