Пытаюсь замутить код по идиоме - получение ресурса есть инициализация для работы с библиотеками и заодно что бы клиенты не заботились об кроссплатформенности и сообщениях пользователю.
Параметром конструктора передается имя библиотеки. Если пишу имя L"mail_forDocflow" - библиотека открывается, если передаю имя из параметра (сейчас закомментированное) GetLastError() возвращает ошибку 126 (ERROR_MOD_NOT_FOUND)
?
func_from_dll::func_from_dll(const char *libName)
{
cout << "func_from_dll::func_from_dll()" << endl;
map<string, opd_library>::iterator it = stLib_map.find(libName);
nameThis_opened_dll = libName;
if ( it == stLib_map.end() ) // Такой библиотеки нет в списке открытых библиотек
{
#ifdef WIN32
ptrThis_opened_dll = LoadLibrary(L"mail_forDocflow");//((LPCWSTR)libName);
#else
ptrThis_opened_dll = dlopen(libName, RTLD_LAZY);
#endif
if ( ptrThis_opened_dll == NULL )
{ // Получить ошибки и выйти
cout << "ptrThis_opened_dll == NULL" << endl;
#ifdef WIN32
fprintf(stderr,"* dlerror()= %d\n", GetLastError());
#else
fprintf(stderr,"* dlerror()= %s\n", dlerror());
#endif
return;
}
. . . и т. д.