(msys2 gcc 13.3.0) выдается ошибка
Код: Выделить всё
/usr/lib/gcc/x86_64-pc-msys/13.3.0/../../../../x86_64-pc-msys/bin/ld: /tmp/cceEWaVo.o:x.cpp:(.text+0x50): undefined reference to `std::basic_ifstream::open(wchar_t const*, std::_Ios_Openmode)'
Код: Выделить всё
#include
int main() {
std::ifstream f("x.cpp"); // works
f.close();
f.open(L"x.cpp"); // doesn't link
return 0;
}
Я ожидал, что код скомпилируется нормально, поскольку ifstream является классом шаблона и определен в заголовке.
Я проверил, есть ли в код, определяющий open( wchar_t const* __s, std::ios_base::openmode __mode) обнаруживается компилятором путем редактирования файла заголовка и помещения блока #error прямо над функцией, и компилятор находит if (что означает, что все ifdef прошли)
Может кто-нибудь объяснить, почему функции класса шаблона, определенные в заголовке, должны каким-то образом существовать в libstdc++
Я знаю, что mingw-w64 gcc компилятор работает с fstream open(wchar_t const* __s, std::ios_base::openmode __mode), но мне конкретно нужна версия msys
Подробнее здесь: https://stackoverflow.com/questions/793 ... erence-whi
Мобильная версия