对"std::__default_alloc_template<true, 0>::d eallocate(void*, unsigned int)"的未定义引用

undefined reference to `std::__default_alloc_template<true, 0>::deallocate(void*, unsigned int)'

本文关键字:unsigned void int eallocate 未定义 引用 std template alloc lt true      更新时间:2023-10-16

在ubuntu上链接代码时,我得到以下错误
undefined reference to 'std::__default_alloc_template<true, 0>::deallocate(void*, unsigned int)'
我尝试了几个g++编译器,但没有任何变化。我在之前的答案中发现的原因是配置错误,如果包括。以下是代码中包含的内容:

#pragma warning(disable:4786)
#include <stdio.h>
#include <map>
#include <string>
#include <vector>
#include <png.h>
#include <math.h>
#include <ft2build.h>
#include <gd.h>
#include FT_FREETYPE_H
using namespace std;
#ifndef WIN32
#define stricmp strcasecmp
#else
#include <io.h>
#include <fcntl.h>
#endif

请帮助修复这些包括?

您可能正在编译并将链接到gcc而不是g++。对于编译来说,没有太大的区别。GCC使用文件扩展名来猜测真正的语言,但是在链接时,g++也会引入c++标准库,这是通常定义分配器的地方。