我是靠谱客的博主 慈祥绿草,最近开发中收集的这篇文章主要介绍编译ARToolKit遇到的几个问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近在研究在ARToolKit这个框架,今天根据一个博客尝试着自己编译框架,遇到了不少问题,走过了不少坑,记录下自己遇到的几个问题,以免后面忘记了。

1、Error LNK2019错误

这个错误多数情况下是因为没有配置openGL的链接器,也就是lib。

collideTest.obj : error LNK2019: 无法解析的外部符号 __imp__glClear@4,该符号在函数 _draw 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2001: 无法解析的外部符号 __imp__glClear@4
4>collideTest.obj : error LNK2019: 无法解析的外部符号 __imp__glClearDepth@8,该符号在函数 _draw 中被引用
4>collideTest.obj : error LNK2019: 无法解析的外部符号 __imp__glColor3f@12,该符号在函数 _mainLoop 中被引用
4>collideTest.obj : error LNK2019: 无法解析的外部符号 __imp__glDepthFunc@4,该符号在函数 _draw 中被引用
4>collideTest.obj : error LNK2019: 无法解析的外部符号 __imp__glDisable@4,该符号在函数 _draw 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2001: 无法解析的外部符号 __imp__glDisable@4
4>collideTest.obj : error LNK2019: 无法解析的外部符号 __imp__glEnable@4,该符号在函数 _draw 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2001: 无法解析的外部符号 __imp__glEnable@4
4>collideTest.obj : error LNK2019: 无法解析的外部符号 __imp__glLightfv@12,该符号在函数 _draw_object 中被引用
4>collideTest.obj : error LNK2019: 无法解析的外部符号 __imp__glLineWidth@4,该符号在函数 _mainLoop 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2001: 无法解析的外部符号 __imp__glLineWidth@4
4>collideTest.obj : error LNK2019: 无法解析的外部符号 __imp__glLoadMatrixd@4,该符号在函数 _draw_object 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2001: 无法解析的外部符号 __imp__glLoadMatrixd@4
4>collideTest.obj : error LNK2019: 无法解析的外部符号 __imp__glMaterialfv@12,该符号在函数 _draw_object 中被引用
4>collideTest.obj : error LNK2019: 无法解析的外部符号 __imp__glMatrixMode@4,该符号在函数 _draw_object 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2001: 无法解析的外部符号 __imp__glMatrixMode@4
4>collideTest.obj : error LNK2019: 无法解析的外部符号 __imp__glTranslatef@12,该符号在函数 _draw_object 中被引用
4>collideTest.obj : error LNK2019: 无法解析的外部符号 _glutInit@8,该符号在函数 _main 中被引用
4>collideTest.obj : error LNK2019: 无法解析的外部符号 _glutSolidSphere@16,该符号在函数 _draw_object 中被引用
4>collideTest.obj : error LNK2019: 无法解析的外部符号 _glutSolidCube@8,该符号在函数 _draw_object 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 __imp__glBegin@4,该符号在函数 _argLineSeg 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 __imp__glBindTexture@8,该符号在函数 _argInit2 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 __imp__glCallList@4,该符号在函数 _argDispImageTex3 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 __imp__glClearColor@16,该符号在函数 _argInitLoop 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 __imp__glClearStencil@4,该符号在函数 _argInitStencil 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 __imp__glDrawPixels@20,该符号在函数 _argDispImageDrawPixels 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 __imp__glEnd@0,该符号在函数 _argLineSeg 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 __imp__glEndList@0,该符号在函数 _argDispImageTex3 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 __imp__glFlush@0,该符号在函数 _argLineSeg 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 __imp__glGenLists@4,该符号在函数 _argDispImageTex3 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 __imp__glGenTextures@8,该符号在函数 _argInit2 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 __imp__glLoadIdentity@0,该符号在函数 _argDrawMode2D 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 __imp__glNewList@8,该符号在函数 _argDispImageTex3 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 __imp__glOrtho@48,该符号在函数 _argDrawMode2D 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 __imp__glPixelStorei@8,该符号在函数 _argInit2 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 __imp__glPixelZoom@8,该符号在函数 _argDispImageDrawPixels 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 __imp__glRasterPos3f@12,该符号在函数 _argDispImageDrawPixels 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 __imp__glScissor@16,该符号在函数 _argDispImage 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 __imp__glStencilFunc@12,该符号在函数 _argInitStencil 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 __imp__glStencilOp@12,该符号在函数 _argInitStencil 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 __imp__glTexCoord2d@16,该符号在函数 _argDispImageTex3 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 __imp__glTexEnvf@12,该符号在函数 _argInit2 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 __imp__glTexImage2D@36,该符号在函数 _argDispImageTex3 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 __imp__glTexParameterf@12,该符号在函数 _argInit2 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 __imp__glTexSubImage2D@36,该符号在函数 _argDispImageTex3 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 __imp__glVertex2f@8,该符号在函数 _argLineSeg 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 __imp__glVertex3d@24,该符号在函数 _argDispImageTex3 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 __imp__glViewport@16,该符号在函数 _argDrawMode2D 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 _glutInitDisplayMode@4,该符号在函数 _argInit2 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 _glutInitWindowPosition@8,该符号在函数 _argInit2 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 _glutInitWindowSize@8,该符号在函数 _argInit2 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 _glutMainLoop@0,该符号在函数 _argMainLoop 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 _glutCreateWindow@4,该符号在函数 _argInit2 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 _glutSwapBuffers@0,该符号在函数 _argSwapBuffers 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 _glutFullScreen@0,该符号在函数 _argInit2 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 _glutDisplayFunc@4,该符号在函数 _argMainLoop 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 _glutKeyboardFunc@4,该符号在函数 _argInitLoop 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 _glutMouseFunc@4,该符号在函数 _argInitLoop 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 _glutIdleFunc@4,该符号在函数 _argInitLoop 中被引用
4>libARgsubd.lib(gsub.obj) : error LNK2019: 无法解析的外部符号 _glutGet@4,该符号在函数 _argInit2 中被引用

解决办法:

在工程属性->连接器–输入–附加依赖项 栏目里添加以下几个lib文件:

glut32.lib
Opengl32.lib
Glu32.lib

2、Error LNK2026: 模块对于 SAFESEH 映像是不安全的。

这个错误经常会出现很多。如下:
这里写图片描述

解决办法

在工程属性–链接器–命令行 中添加以下命令:

/SAFESEH:NO 

最后

以上就是慈祥绿草为你收集整理的编译ARToolKit遇到的几个问题的全部内容,希望文章能够帮你解决编译ARToolKit遇到的几个问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(71)

评论列表共有 0 条评论

立即
投稿
返回
顶部