链接错误LNK2001:未解析的符号glePolyCylinder

时间:2014-01-23 18:53:45

标签: linker

我正在尝试将GLE tubing and extrusion library用于个人OpenGL项目,但我遇到了以下错误:

error LNK2001: unresolved external symbol "void __cdecl glePolyCylinder(int,double (* const)[3],float (* const)[3],double)" (?glePolyCylinder@@YAXHQAY02NQAY02MN@Z) 

我正在使用VS Express 2013进行编译。我创建了一个空项目并将GLE源代码编译成.lib文件,然后将此.lib文件添加到我的主项目中的链接器依赖项(属性 - >链接器 - >输入 - >其他依赖项)与我正在使用的其他.lib文件,我已经包含头文件:

#include "gle-3.0.0\src\gle.h"

但我仍然不断收到错误。我做错了什么?

2 个答案:

答案 0 :(得分:1)

似乎您要包含标题,但不链接到库。

你的代码顶部有这样的东西吗?

#pragma comment (lib, "gle32")

有关pragma的更多信息,请参阅文档:

http://msdn.microsoft.com/en-us/library/7f0aews7.aspx

答案 1 :(得分:1)

当您要在VS中包含第三方库时,有几件事要做。

首先,在项目属性中(右键单击VS中的项目名称),选择菜单底部的属性。在对话框中,转到Configuration Properties =>链接器=>全部

在All options下,向上滚动到Additional Dependencies并通过添加gle32.lib添加lib;在kernel32.lib.Options之前。 VS Properties Dialog http://i60.tinypic.com/9kq8ef.jpg

之后,您必须将gle32.lib路径附加到其他库目录,您可以为其提供测试目的的完整路径以及何时正确链接使用宏来为其构建相对路径。它可以在弹出的附加对话框中记录。

现在,尝试构建并查看它是否正确链接。如果它仍然没有正确链接,请确保检查路径和lib等的名称。并且,确保验证您正在构建使用具有相同体系结构的gle32.lib的新项目,例如。用于32位解决方案构建配置的32位库。你不能混合使用32位和64位的库。

正如@aledalgrande指出的那样,您也可以使用#pragma注释,但这仍然需要您正确设置库搜索路径,因此我建议您从上面所述的项目属性开始。

另一方面说明。不要在include指令中使用反斜杠(\),因为Windows和VS会为你处理正斜杠(/),这样可以更容易地将代码移动到其他操作系统,并且确保你不是这样也是一种理智的事情。触发任何意外的字符串转义。

祝你好运!