我一直在学习OpenGL-tutorial.org系列教程。所有的工作都很好,但是我没有能够让教程5在我的操场可执行文件中工作,尽管它在从示例教程5可执行文件运行时确实工作。即使在复制和粘贴示例代码时也是如此。
我收到以下错误:
Undefined symbols for architecture x86_64:
"loadDDS(char const*)", referenced from:
_main in playground.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)下面是链接日志:
Ld playground/playground normal x86_64
cd /Users/RufusVijayaratnam/rufus/Coding/ogl-master
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -target x86_64-apple-macos10.15 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk -L/Users/RufusVijayaratnam/rufus/Coding/ogl-master/playground -F/Users/RufusVijayaratnam/rufus/Coding/ogl-master/playground -filelist /Users/RufusVijayaratnam/rufus/Coding/OpenGL/Tutorials.build/Debug/playground.build/Objects-normal/x86_64/playground.LinkFileList -Xlinker -object_path_lto -Xlinker /Users/RufusVijayaratnam/rufus/Coding/OpenGL/Tutorials.build/Debug/playground.build/Objects-normal/x86_64/playground_lto.o -Xlinker -no_deduplicate -Wl,-search_paths_first -Wl,-headerpad_max_install_names -framework OpenGL -framework OpenGL /Users/RufusVijayaratnam/rufus/Coding/OpenGL/external/glfw-3.1.2/src/Debug/libglfw3.a /Users/RufusVijayaratnam/rufus/Coding/OpenGL/external/Debug/libGLEW_1130.a -framework Cocoa -framework OpenGL -framework IOKit -framework CoreFoundation -framework CoreVideo -Xlinker -dependency_info -Xlinker /Users/RufusVijayaratnam/rufus/Coding/OpenGL/Tutorials.build/Debug/playground.build/Objects-normal/x86_64/playground_dependency_info.dat -o /Users/RufusVijayaratnam/rufus/Coding/ogl-master/playground/playground因此,错误似乎是,当函数loadDDS()被调用时,没有找到它。我不知道这是为什么。该函数是在texture.ccp中声明的,它与texture.hpp一起在一个文件夹(称为“公共”)中声明。texture.hpp的代码如下:
#ifndef TEXTURE_HPP
#define TEXTURE_HPP
// Load a .DDS file using GLFW's own loader
GLuint loadDDS(const char * imagepath);
#endif在playground.cpp中有:
include<texture.hpp>
为什么找不到loadDDS(),即使我已经将操场函数的工作目录设置为与教程5相同,而且playground.ccp和'tutorial05.ccp‘中的代码完全相同?
发布于 2020-01-25 19:53:57
操场可执行文件(不起作用)的
(操场/游乐场/游乐场/Shader.cpp公共/shader.cpp公共/shader.hpp),以及教程5(确实有效)的最后教程5 add_executable(tutorial05_textured_cube tutorial05_ the _多维数据集/tutorial05.cpp公用/shader.pp公共/shader.hpp公共/texture.cpp公共/texture.hpp
)
因此,我猜测loadDDS()是在texture.cpp中实现的,因为您没有添加这个文件,所以不会编译它,结果的对象文件也不会被链接,符号也就找不到了。
https://stackoverflow.com/questions/59911347
复制相似问题