Сбой в SQLite3 на платформе Windows RT ARM

В настоящее время я использую загрузку SQLite3 v3.7.14 через менеджер расширений и обновлений в Visual Studio 2012. Когда я компилирую для Win32, это работает, но когда я компилирую и запускаю на ARM, это не так. Это происходит сбой всякий раз, когда я пытаюсь установить sqlite3_temp_directory. Я чувствую, что я следую за документацией здесь (http://www.sqlite.org/c3ref/temp_directory.html).

void init()
{
// Set the temporary directory for sqlite prior to opening the database
LPCWSTR zPath = Windows::Storage::ApplicationData::Current->TemporaryFolder->Path->Data();
char zPathBuf[MAX_PATH + 1];
memset(zPathBuf, 0, sizeof(zPathBuf));
WideCharToMultiByte(CP_UTF8, 0, zPath, -1, zPathBuf, sizeof(zPathBuf), NULL, NULL);
sqlite3_temp_directory = sqlite3_mprintf("%s", zPathBuf); // CRASHES HERE ON WINRT

auto localDataPath = Windows::Storage::ApplicationData::Current->LocalFolder->Path;
std::wstring path(localDataPath->Data());
path += L"\\database.sql";

sqlite3_open16(path.c_str(), &m_DB);
}

Интересно, я что-то пропустил? Я не уверен, как его отладить, и не могу найти хороших примеров использования SQLite3 в WinRT или правильно использовать sqlite3_temp_directory.

Обновить:

Оказывается, приведенный выше код работает должным образом, если я включаю необработанные файлы sqlite3.h / .c в обход официальных предварительно скомпилированных файлов .lib / .dll.

1

Решение

Команда SQLite3 сообщила мне, что проблема действительно существует. Сама проблема либо в кодовой базе SQLite3, либо в компиляторе Microsoft MSVC, и они активно работают над решением.

Оказывается, проблема возникает только при включенной оптимизации, основным виновником которой является ключ / Og. Вы можете временно отключить оптимизацию сборки, чтобы решить эту проблему.

1

Другие решения

Других решений пока нет …