c – G Undefined Reference std ::
发布时间:2020-12-16 06:47:07 所属栏目:百科 来源:网络整理
导读:我一直在努力将我的一个游戏移植到 Linux上,似乎无法弄清楚我收到错误的原因.该游戏最初是在Visual Studio 2010中编写的,我已经提取了所有需要的内容(标题,cpp,纹理),并且我正在尝试编译. 使用g -c -o exampleFile.o exampleFile.cpp编译文件工作正常,没有任
我一直在努力将我的一个游戏移植到
Linux上,似乎无法弄清楚我收到错误的原因.该游戏最初是在Visual Studio 2010中编写的,我已经提取了所有需要的内容(标题,cpp,纹理),并且我正在尝试编译.
使用g -c -o exampleFile.o exampleFile.cpp编译文件工作正常,没有任何错误.但是在链接时,我遇到了关于std函数的数百个错误,例如: Bmp.o: In function `Image::Bmp::Bmp()': Bmp.cpp:(.text+0x58): undefined reference to `std::allocator<char>::allocator()' Bmp.cpp:(.text+0x74): undefined reference to `std::basic_string<char,std::char_traits<char>,std::allocator<char> >::basic_string(char const*,std::allocator<char> const&)' Bmp.cpp:(.text+0x80): undefined reference to `std::allocator<char>::~allocator()' Bmp.cpp:(.text+0x91): undefined reference to `std::allocator<char>::~allocator()' 完整输出可在PasteBin找到 Bmp.cpp文件是由其他人编写的库函数,可以找到它here上面提到的代码是: #include <fstream> #include <iostream> #include <cstring> #include "Bmp.h" using std::ifstream; using std::ofstream; using std::ios; using std::cout; using std::endl; using namespace Image; /////////////////////////////////////////////////////////////////////////////// // default constructor /////////////////////////////////////////////////////////////////////////////// Bmp::Bmp() : width(0),height(0),bitCount(0),dataSize(0),data(0),dataRGB(0),errorMessage("No error.") { } Bmp::Bmp(const Bmp &rhs) { // copy member variables from right-hand-side object width = rhs.getWidth(); height = rhs.getHeight(); bitCount = rhs.getBitCount(); dataSize = rhs.getDataSize(); errorMessage = rhs.getError(); if(rhs.getData()) // allocate memory only if the pointer is not NULL { data = new unsigned char[dataSize]; memcpy(data,rhs.getData(),dataSize); // deep copy } else data = 0; // array is not allocated yet,set to 0 if(rhs.getDataRGB()) // allocate memory only if the pointer is not NULL { dataRGB = new unsigned char[dataSize]; memcpy(dataRGB,rhs.getDataRGB(),dataSize); // deep copy } else dataRGB = 0; // array is not allocated yet,set to 0 } 不确定问题是什么,但是链接器无法访问std函数让我感到震惊?在此先感谢您的帮助. 编辑链接命令:gcc -o LDTux Bmp.o character.o chickenList.o chicken.o farmList.o farm.o fieldList.o field.o generall_utils.o landscape.o object.o SZ_NumberList.o SZ_Sprite.o worm.o wormList.o wormSpawn.o wormSpawnList.o GameWorld.o HelloOpenGL.o -lGL -lglut -lm 解决方法
正如DietmarKühl先前在评论中指出的那样,你应该将链接器命令从gcc更改为g.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |