Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

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

Aperta Adatta ai principianti
#2,283 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 4 giorni

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
78/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Tranquilla
Stack tecnologico
cpp
Ambito
build-system

Direzione di ricerca

Iniziare da src/OpenColorIO/transforms/FileTransform.cpp ed esaminare la costruzione di std::ifstream tramite Platform::filenameToUTF(filepath). Compilare OpenColorIO con GCC/MinGW-w64 o MXE per riprodurre il problema dell’overload std::wstring, quindi verificare che la gestione dei percorsi venga compilata e funzioni nelle configurazioni interessate.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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);
Lingua principale
C++
Stelle
2.1k
Fork
503
Merge medio
8g 3h
PR unite (30g)
10

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di AcademySoftwareFoundation/OpenColorIO

Tutte le issue di AcademySoftwareFoundation/OpenColorIO

Issue simili

Altre issue su C++

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.