Dahua NetSDK Error 9: NET_SDK_INIT_ERROR — сбой инициализации CLIENT_Init
- Функция
CLIENT_InitвозвращаетFALSE, а код ошибки равен9(NET_SDK_INIT_ERROR). - Приложение не может инициализировать внутренние структуры SDK при старте.
- Любые последующие вызовы функций SDK падают с ошибками или завершают процесс.
1. Корректный вызов CLIENT_Init с коллбэком
Убедитесь, что функция инициализации вызывается один раз при старте приложения до любых других вызовов SDK:
// Функция обратного вызова отключения
void CALLBACK DisConnectCallback(LLONG lLoginID, char *pchDVRIP, LONG nDVRPort, LDWORD dwUser) {
printf("Device disconnected: %s\n", pchDVRIP);
}
// Инициализация SDK
BOOL bInit = CLIENT_Init(DisConnectCallback, 0);
if (!bInit) {
DWORD dwErr = CLIENT_GetLastError();
printf("CLIENT_Init failed with error: %d\n", dwErr);
}2. Проверка наличия вспомогательных динамических библиотек
Убедитесь, что рядом с dhnetsdk.dll (или libdhnetsdk.so) находятся все необходимые библиотеки из официального SDK пакета:
dhconfigsdk.dlldhplay.dllInfra.dllStreamSvr.dll
3. Предотвращение повторной инициализации
Не вызывайте CLIENT_Init повторно без предварительного вызова CLIENT_Cleanup.
Частые вопросы (FAQ)
Сколько раз за жизненный цикл программы нужно вызывать CLIENT_Init?
Ровно один раз при запуске основного процесса приложения. Повторный вызов вернет ошибку или приведет к неконсистентному состоянию.
Можно ли передать NULL в качестве коллбэка fDisConnect?
Да, передача NULL разрешена, но крайне не рекомендуется, так как приложение потеряет возможность отслеживать разрывы соединений.
Почему под Linux CLIENT_Init завершается с ошибкой 9?
Частая причина — отсутствие прав на создание временных файлов/сокетов в директории /tmp или отсутствие прав на исполнение .so файлов.
Нужно ли вызывать CLIENT_Init в каждом потоке?
Нет, инициализация глобальна для всего процесса операционной системы.