Как сделать потокобезопасную библиотеку на с++?
Когда я загружаю библиотеку и вызываю функцию одновременно из разных потоков возникает ошибка доступа к поврежденной памяти. Пример кода функции dll
int32_t __stdcall LoginTest(const char* ip, const char* login, const char* password, int32_t port, Notification notification) {
if (notification == nullptr)
return 0;
LLONG lLogin = Login(ip, login, password, port);
if (lLogin == 0)
notification("Login device failed", DecodeErrorReason((CLIENT_GetLastError()&(0x7fffffff))));
else
notification("success", "login success");
Logout(lLogin);
return 1;
}
Вызываю я эту функцию из c# с помощью вот такой функции:
[DllImport("dahuaSDK", CallingConvention = CallingConvention.StdCall, ExactSpelling = false, EntryPoint = "LoginTest")]
private static extern int LoginTest(string ip, string login, string password, int port, Notification notification);
Подскажите пожалуйста как можно сделать потокобезопасной функцию библиотеки ?