Вы правы, документация Oracle гласит , что это:
Должно быть в кодировке UTF-16 в режиме среды OCI_UTF16.
Чтобы преобразовать это в UTF-16, они не говорят это здесь, но Oracle предоставляет простой макрос.Это должно быть так просто:
rc = OCILogon(p_env, p_err, &p_svc, UTF16("scott"), 5, UTF16("tiger"), 5, UTF16("d458_nat"), 8);
Документация также утверждает , что вы также можете использовать букву "L" для использования литерала самой широкой строки, поэтому это также должно работать:
rc = OCILogon(p_env, p_err, &p_svc, L"scott", 5, L"tiger", 5, L"d458_nat", 8);
Примечание: вы должны включить ocilib.h и ссылку на ocilibw.Lib, как указано в документации oci:
В Microsoft Windows предоставляются 32-битные и 64-битные библиотеки DLL (x86)и может быть легко перекомпилирован.Распаковать текущий архив (ocilib-xyz-windows.zip)
Копировать ocilib \ include \ ocilib.h
Копировать ocilib \ lib32 | 64 \ ocilib [x] .Lib
Копировать ocilib \ lib32 | 64 \оцилиб [х].Dll [...]
где [x] - скомпилированная версия OCILIB ('a'> -> ANSI, 'w' -> Unicode, 'm' -> Mixed)