Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Build failure on GCC/MinGW (MXE): std::ifstream constructor mismatch with Platform::filenameToUTF()

Abierto Apto para principiantes
#2,283 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 4 días

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
78/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Tranquilo
Stack tecnológico
cpp
Área
build-system

Línea de trabajo

Comience en src/OpenColorIO/transforms/FileTransform.cpp e inspeccione la construcción de std::ifstream mediante Platform::filenameToUTF(filepath). Compile OpenColorIO con GCC/MinGW-w64 o MXE para reproducir el fallo de la sobrecarga de std::wstring y, a continuación, verifique que el manejo de rutas compile y funcione en las configuraciones afectadas.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Description

OpenColorIO 2.5.1 fails to compile under GCC / MinGW-w64 (including MXE cross builds) due to inconsistent file path type handling in Platform::filenameToUTF() when used with std::ifstream in FileTransform.cpp.

The failure occurs when constructing a std::ifstream from the result of Platform::filenameToUTF(filepath), where the returned type may vary between std::string and std::wstring depending on build configuration (_WIN32 && UNICODE).

This leads to template overload resolution failures under GCC/libstdc++ when a std::wstring is involved in std::ifstream construction.

Error observed (GCC / libstdc++)

error: no matching function for call to
std::basic_ifstream<char>::basic_ifstream(const std::wstring, std::ios_base::openmode)

Affected code src/OpenColorIO/transforms/FileTransform.cpp:

std::ifstream(Platform::filenameToUTF(filepath), mode)

Root cause

  • Platform::filenameToUTF() is conditionally typed:
  • std::wstring on _WIN32 && UNICODE
  • std::string otherwise
  • std::ifstream construction from std::wstring is not consistently supported across standard library implementations
  • GCC/libstdc++ rejects this usage, while MSVC may accept it depending on STL implementation details
  • This creates a portability issue in file I/O path handling

Impact

  • Breaks MXE / MinGW-w64 cross compilation
  • Causes divergence between MSVC and GCC builds
  • Introduces non-portable file path handling in core I/O utilities

Suggested fix

Avoid passing platform-dependent string types directly into std::ifstream construction.

This is the C++17-compatible solution that worked:

auto path = Platform::filenameToUTF(filepath);
return std::make_unique<std::ifstream>(path.c_str(), mode);
Lenguaje dominante
C++
Estrellas
2.1k
Forks
503
Merge medio
8 d 3 h
PR fusionados (30 d)
10

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de AcademySoftwareFoundation/OpenColorIO

Todos los issues de AcademySoftwareFoundation/OpenColorIO

Issues similares

Más issues de C++

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.