gpt4 book ai didi

c++ - G++ undefined reference std::

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:25:33 26 4
gpt4 key购买 nike

我一直致力于将我的一款游戏移植到 Linux,但似乎无法弄清楚我收到的错误的原因。该游戏最初是用 Visual Studio 2010 编写的,我已经提取了所有需要的内容( header 、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
}

不太确定问题出在哪里,但令我震惊的是链接器无法访问标准函数?在此先感谢您的帮助。

编辑 链接命令: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

最佳答案

正如 Dietmar Kühl 之前在评论中指出的那样,您应该将链接器命令从 gcc 更改为 g++

关于c++ - G++ undefined reference std::,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19016253/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com