最近在调试一个一个程序(VS2010+opengl),刚开始时用win32下开发的,程序运行正常,但是当在VS2010中改变【生成->配置管理器->活动解决方案平台】如下图所示
改变运行平台在X64下时,其运行出错了,错误如下所示:
1>Test3DConstructionUsingMatlabDllEx0828View.obj : error LNK2019: 无法解析的外部符号 __imp_glEnable,该符号在函数 "public: void __cdecl CTest3DConstructionUsingMatlabDllEx0828View::Init(void)" (?Init@CTest3DConstructionUsingMatlabDllEx0828View@@QEAAXXZ) 中被引用
1>Test3DConstructionUsingMatlabDllEx0828View.obj : error LNK2019: 无法解析的外部符号 __imp_glClearDepth,该符号在函数 "public: void __cdecl CTest3DConstructionUsingMatlabDllEx0828View::Init(void)" (?Init@CTest3DConstructionUsingMatlabDllEx0828View@@QEAAXXZ) 中被引用
1>Test3DConstructionUsingMatlabDllEx0828View.obj : error LNK2019: 无法解析的外部符号 __imp_wglMakeCurrent,该符号在函数 "public: void __cdecl CTest3DConstructionUsingMatlabDllEx0828View::Init(void)" (?Init@CTest3DConstructionUsingMatlabDllEx0828View@@QEAAXXZ) 中被引用
1>Test3DConstructionUsingMatlabDllEx0828View.obj : error LNK2019: 无法解析的外部符号 __imp_wglCreateContext,该符号在函数 "public: void __cdecl CTest3DConstructionUsingMatlabDllEx0828View::Init(void)" (?Init@CTest3DConstructionUsingMatlabDllEx0828View@@QEAAXXZ) 中被引用
1>Test3DConstructionUsingMatlabDllEx0828View.obj : error LNK2019: 无法解析的外部符号 __imp_wglGetCurrentDC,该符号在函数 "public: void __cdecl CTest3DConstructionUsingMatlabDllEx0828View::DrawScene(void)" (?DrawScene@CTest3DConstructionUsingMatlabDllEx0828View@@QEAAXXZ) 中被引用
1>Test3DConstructionUsingMatlabDllEx0828View.obj : error LNK2019: 无法解析的外部符号 __imp_glFinish,该符号在函数 "public: void __cdecl CTest3DConstructionUsingMatlabDllEx0828View::DrawScene(void)" (?DrawScene@CTest3DConstructionUsingMatlabDllEx0828View@@QEAAXXZ) 中被引用
1>Test3DConstructionUsingMatlabDllEx0828View.obj : error LNK2019: 无法解析的外部符号 __imp_glPopMatrix,该符号在函数 "public: void __cdecl CTest3DConstructionUsingMatlabDllEx0828View::DrawScene(void)" (?DrawScene@CTest3DConstructionUsingMatlabDllEx0828View@@QEAAXXZ) 中被引用
1>Test3DConstructionUsingMatlabDllEx0828View.obj : error LNK2019: 无法解析的外部符号 __imp_glEnd,该符号在函数 "public: void __cdecl CTest3DConstructionUsingMatlabDllEx0828View::DrawScene(void)" (?DrawScene@CTest3DConstructionUsingMatlabDllEx0828View@@QEAAXXZ) 中被引用
1>Test3DConstructionUsingMatlabDllEx0828View.obj : error LNK2019: 无法解析的外部符号 __imp_glVertex3f,该符号在函数 "public: void __cdecl CTest3DConstructionUsingMatlabDllEx0828View::DrawScene(void)" (?DrawScene@CTest3DConstructionUsingMatlabDllEx0828View@@QEAAXXZ) 中被引用
1>Test3DConstructionUsingMatlabDllEx0828View.obj : error LNK2019: 无法解析的外部符号 __imp_glColor3f,该符号在函数 "public: void __cdecl CTest3DConstructionUsingMatlabDllEx0828View::DrawScene(void)" (?DrawScene@CTest3DConstructionUsingMatlabDllEx0828View@@QEAAXXZ) 中被引用
1>Test3DConstructionUsingMatlabDllEx0828View.obj : error LNK2019: 无法解析的外部符号 __imp_glBegin,该符号在函数 "public: void __cdecl CTest3DConstructionUsingMatlabDllEx0828View::DrawScene(void)" (?DrawScene@CTest3DConstructionUsingMatlabDllEx0828View@@QEAAXXZ) 中被引用
1>Test3DConstructionUsingMatlabDllEx0828View.obj : error LNK2019: 无法解析的外部符号 __imp_glPointSize,该符号在函数 "public: void __cdecl CTest3DConstructionUsingMatlabDllEx0828View::DrawScene(void)" (?DrawScene@CTest3DConstructionUsingMatlabDllEx0828View@@QEAAXXZ) 中被引用
1>Test3DConstructionUsingMatlabDllEx0828View.obj : error LNK2019: 无法解析的外部符号 __imp_glPushMatrix,该符号在函数 "public: void __cdecl CTest3DConstructionUsingMatlabDllEx0828View::DrawScene(void)" (?DrawScene@CTest3DConstructionUsingMatlabDllEx0828View@@QEAAXXZ) 中被引用
1>Test3DConstructionUsingMatlabDllEx0828View.obj : error LNK2019: 无法解析的外部符号 __imp_glClear,该符号在函数 "public: void __cdecl CTest3DConstructionUsingMatlabDllEx0828View::DrawScene(void)" (?DrawScene@CTest3DConstructionUsingMatlabDllEx0828View@@QEAAXXZ) 中被引用
1>Test3DConstructionUsingMatlabDllEx0828View.obj : error LNK2019: 无法解析的外部符号 __imp_glClearColor,该符号在函数 "public: void __cdecl CTest3DConstructionUsingMatlabDllEx0828View::DrawScene(void)" (?DrawScene@CTest3DConstructionUsingMatlabDllEx0828View@@QEAAXXZ) 中被引用
1>Test3DConstructionUsingMatlabDllEx0828View.obj : error LNK2019: 无法解析的外部符号 __imp_wglDeleteContext,该符号在函数 "public: void __cdecl CTest3DConstructionUsingMatlabDllEx0828View::OnDestroy(void)" (?OnDestroy@CTest3DConstructionUsingMatlabDllEx0828View@@QEAAXXZ) 中被引用
1>Test3DConstructionUsingMatlabDllEx0828View.obj : error LNK2019: 无法解析的外部符号 __imp_wglGetCurrentContext,该符号在函数 "public: void __cdecl CTest3DConstructionUsingMatlabDllEx0828View::OnDestroy(void)" (?OnDestroy@CTest3DConstructionUsingMatlabDllEx0828View@@QEAAXXZ) 中被引用
1>Test3DConstructionUsingMatlabDllEx0828View.obj : error LNK2019: 无法解析的外部符号 __imp_glOrtho,该符号在函数 "public: void __cdecl CTest3DConstructionUsingMatlabDllEx0828View::OnSize(unsigned int,int,int)" (?OnSize@CTest3DConstructionUsingMatlabDllEx0828View@@QEAAXIHH@Z) 中被引用
1>Test3DConstructionUsingMatlabDllEx0828View.obj : error LNK2019: 无法解析的外部符号 __imp_glLoadIdentity,该符号在函数 "public: void __cdecl CTest3DConstructionUsingMatlabDllEx0828View::OnSize(unsigned int,int,int)" (?OnSize@CTest3DConstructionUsingMatlabDllEx0828View@@QEAAXIHH@Z) 中被引用
1>Test3DConstructionUsingMatlabDllEx0828View.obj : error LNK2019: 无法解析的外部符号 __imp_glMatrixMode,该符号在函数 "public: void __cdecl CTest3DConstructionUsingMatlabDllEx0828View::OnSize(unsigned int,int,int)" (?OnSize@CTest3DConstructionUsingMatlabDllEx0828View@@QEAAXIHH@Z) 中被引用
1>Test3DConstructionUsingMatlabDllEx0828View.obj : error LNK2019: 无法解析的外部符号 __imp_glViewport,该符号在函数 "public: void __cdecl CTest3DConstructionUsingMatlabDllEx0828View::OnSize(unsigned int,int,int)" (?OnSize@CTest3DConstructionUsingMatlabDllEx0828View@@QEAAXIHH@Z) 中被引用
1>D:\project\VcProject\Test3DConstructionUsingMatlabDllEx0828\x64\Debug\Test3DConstructionUsingMatlabDllEx0828.exe : fatal error LNK1120: 21 个无法解析的外部命令
----->改正上面错误的方法其实很简单
Visual C++ 2010 中已经提供了对 OpenGL 库的支持,这里主要需要配置的是 GLUT。GLUT 是一个与窗口系统无关的工具包,当我们在写 OpenGL 程序时,可以通过 GLUT 实现简单的窗口的创建等操作,免去了学习特定 OS 下 GUI库的过程。
glut下载地址:
http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip
将下载的文件解压后,将把里面的文件移动到以下文件夹
glut.h —> C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include\gl
glut.dll,glut32.dll —>C:\Windows\SysWOW64 (64位操作系统)
—> C:\Windows\System32 (32位操作系统)
glut.lib,glut32.lib —> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib
以上,配置成功!
还有一点就是【项目->属性->链接】如下图所示
在【连接器->常规->附加库目录】在里面选入选择x64的库目录,如我自己的机器上是:C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib\x64
因为VS默认是win32的库目录,所以要手动加入x64库目录,加入之后就可以了