On Fri, Dec 1, 2023 at 4:50 AM PG Bug reporting form <noreply@postgresql.org> wrote: > I use libpqxx via vcpkg in Windows project build for x64 system using Visual > Studio. There is a UNICODE define, which causes **W Windows functions to be > used and hence string parameters should be passed in using L"...". > I have sslrootcert file used in my connection string. During the connection > initialization stat() function is invoked for the file. It is implemented in > win32stat.c, which then invokes pgwin32_open_handle() (open.c) and then > initialize_ntdll() (win32ntdll.c) is invoked. There is a use of > LoadLibraryEx which is just a define above LoadLibraryExA or LoadLibraryExW. > Using UNICODE implies LoadLibraryExW to be used, but the parameter passed in > is char*, not wchar_t*. This leads to failed initialization returning error > code 126 - The specified module could not be found. > There should be a switch if UNICODE is defined, then L"ntdll.dll" should be > passed in. The same applies to all other Windows functions consuming > strings.
I don't understand vcpkg so I don't even know where to look, but who defined UNICODE when building libpq?