0

我正在尝试编译第一个练习,来自 OpenGL 红皮书的 triangles.cpp(github 源代码在这里:https ://github.com/openglredbook/examples/tree/master/src )

已经设法通过使用 CMAKE 在 Visual Studio 2015 下编译它并将整个东西构建到 Visual Studio 2015 文件中,并且代码运行正常,但我正在尝试使用 Visual Studio 命令行编译器手动编译文件,cl.

所以我尝试了:

cl triangles.cpp LoadShaders.cpp /I ...\OGLPG-9th-Edition\OGLPG-9th-Edition\include /I ...\OGLPG-9th-Edition\OGLPG-9th-Edition\lib\glfw\include

...包含在此处以省略目录路径。显然,这还没有被链接,所以编译器给了我 28 个未定义的符号(链接)错误。

查看 Visual Studio 2015 中的链接器输出给了我这个:

/OUT:"C:\Users\Owen\Downloads\OGLPG-9th-Edition\OGLPG-9th-Edition\bin\01-triangles_d.exe" /MANIFEST /NXCOMPAT /PDB:"C:/Users/Owen/Downloads/OGLPG-9th-Edition/OGLPG-9th-Edition/bin/01-triangles_d.pdb" /DYNAMICBASE "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "comdlg32.lib" "advapi32.lib" "lib\vermilion_d.lib" "glu32.lib" "opengl32.lib" "glfw3_d.lib" /IMPLIB:"C:/Users/Owen/Downloads/OGLPG-9th-Edition/OGLPG-9th-Edition/lib/01-triangles_d.lib" /DEBUG /MACHINE:X64 /INCREMENTAL /PGD:"C:\Users\Owen\Downloads\OGLPG-9th-Edition\OGLPG-9th-Edition\bin\01-triangles_d.pgd" /SUBSYSTEM:WINDOWS /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"01-triangles.dir\Debug\01-triangles_d.exe.intermediate.manifest" /ERRORREPORT:PROMPT /NOLOGO /LIBPATH:"C:/Users/Owen/Downloads/OGLPG-9th-Edition/OGLPG-9th-Edition/lib" /LIBPATH:"C:/Users/Owen/Downloads/OGLPG-9th-Edition/OGLPG-9th-Edition/lib/Debug" /LIBPATH:"C:\Users\Owen\Downloads\OGLPG-9th-Edition\OGLPG-9th-Edition\lib\glfw" /TLBID:1 

我认为要链接的相关库是:

 "lib\vermilion_d.lib" "glu32.lib" "opengl32.lib" "glfw3_d.lib" 

所以在编译器中我尝试:

cl triangles.cpp LoadShaders.cpp 
/I C:\Users\Owen\Downloads\OGLPG-9th-Edition\OGLPG-9th-Edition\include 
/I C:\Users\Owen\Downloads\OGLPG-9th-Edition\OGLPG-9th-Edition\lib\glfw\include 
glu32.lib opengl32.lib 
C:\Users\Owen\Downloads\OGLPG-9th-Edition\OGLPG-9th-Edition\lib\vermilion_d.lib 
C:\Users\Owen\Downloads\OGLPG-9th-Edition\OGLPG-9th-Edition\lib\glfw3_d.lib

为此,我继续收到链接错误。我在这里做错了什么/不包括?我不认为这是重复的,因为我在 CL 上找不到任何关于 Windows 编译的内容。

这是最终的编译器输出和错误:

Microsoft (R) Incremental Linker Version 14.00.23506.0
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:triangles.exe
triangles.obj
LoadShaders.obj
glu32.lib
opengl32.lib
C:\Users\Owen\Downloads\OGLPG-9th-Edition\OGLPG-9th-Edition\lib\vermilion_d.lib
C:\Users\Owen\Downloads\OGLPG-9th-Edition\OGLPG-9th-Edition\lib\glfw3_d.lib
triangles.obj : error LNK2019: unresolved external symbol _gl3wInit referenced in function _main
triangles.obj : error LNK2019: unresolved external symbol _glfwInit referenced in function _main
triangles.obj : error LNK2019: unresolved external symbol _glfwTerminate referenced in function _main
triangles.obj : error LNK2019: unresolved external symbol _glfwCreateWindow referenced in function _main
triangles.obj : error LNK2019: unresolved external symbol _glfwDestroyWindow referenced in function _main
triangles.obj : error LNK2019: unresolved external symbol _glfwWindowShouldClose referenced in function _main
triangles.obj : error LNK2019: unresolved external symbol _glfwPollEvents referenced in function _main
triangles.obj : error LNK2019: unresolved external symbol _glfwMakeContextCurrent referenced in function _main
triangles.obj : error LNK2019: unresolved external symbol _glfwSwapBuffers referenced in function _main
triangles.obj : error LNK2019: unresolved external symbol _gl3wDrawArrays referenced in function "void __cdecl display(void)" (?display@@YAXXZ)
triangles.obj : error LNK2019: unresolved external symbol _gl3wBindBuffer referenced in function "void __cdecl init(void)" (?init@@YAXXZ)
triangles.obj : error LNK2019: unresolved external symbol _gl3wEnableVertexAttribArray referenced in function "void __cdecl init(void)" (?init@@YAXXZ)
triangles.obj : error LNK2019: unresolved external symbol _gl3wUseProgram referenced in function "void __cdecl init(void)" (?init@@YAXXZ)
triangles.obj : error LNK2019: unresolved external symbol _gl3wVertexAttribPointer referenced in function "void __cdecl init(void)" (?init@@YAXXZ)
triangles.obj : error LNK2019: unresolved external symbol _gl3wClearBufferfv referenced in function "void __cdecl display(void)" (?display@@YAXXZ)
triangles.obj : error LNK2019: unresolved external symbol _gl3wBindVertexArray referenced in function "void __cdecl init(void)" (?init@@YAXXZ)
triangles.obj : error LNK2019: unresolved external symbol _gl3wGenVertexArrays referenced in function "void __cdecl init(void)" (?init@@YAXXZ)
triangles.obj : error LNK2019: unresolved external symbol _gl3wCreateBuffers referenced in function "void __cdecl init(void)" (?init@@YAXXZ)
triangles.obj : error LNK2019: unresolved external symbol _gl3wNamedBufferStorage referenced in function "void __cdecl init(void)" (?init@@YAXXZ)
LoadShaders.obj : error LNK2019: unresolved external symbol _gl3wAttachShader referenced in function _LoadShaders
LoadShaders.obj : error LNK2019: unresolved external symbol _gl3wCompileShader referenced in function _LoadShaders
LoadShaders.obj : error LNK2019: unresolved external symbol _gl3wCreateProgram referenced in function _LoadShaders
LoadShaders.obj : error LNK2019: unresolved external symbol _gl3wCreateShader referenced in function _LoadShaders
LoadShaders.obj : error LNK2019: unresolved external symbol _gl3wDeleteShader referenced in function _LoadShaders
LoadShaders.obj : error LNK2019: unresolved external symbol _gl3wGetProgramiv referenced in function _LoadShaders
LoadShaders.obj : error LNK2019: unresolved external symbol _gl3wGetShaderiv referenced in function _LoadShaders
LoadShaders.obj : error LNK2019: unresolved external symbol _gl3wLinkProgram referenced in function _LoadShaders
LoadShaders.obj : error LNK2019: unresolved external symbol _gl3wShaderSource referenced in function _LoadShaders
C:\Users\Owen\Downloads\OGLPG-9th-Edition\OGLPG-9th-Edition\lib\vermilion_d.lib : warning LNK4272: library machine type 'x64' conflicts with target machine type 'X86'
C:\Users\Owen\Downloads\OGLPG-9th-Edition\OGLPG-9th-Edition\lib\glfw3_d.lib : warning LNK4272: library machine type 'x64' conflicts with target machine type 'X86'
triangles.exe : fatal error LNK1120: 28 unresolved externals
4

0 回答 0