Всем привет!
Пишу на Visual Studio 2003, MFC 7.0
Реализация функции CommConfigDialog лежит в serialui.dll.
Подключить эту dll можно 2-мя способами, насколько я знаю (но у меня пока не один не работает
).
Варианты: явное и неявное связывание.
Пытаюсь вызвать CommConfigDialog явным образом:
typedef BOOL (CommConfigDialogDLL)(LPTSTR lpszName, HWND hWnd, LPCOMMCONFIG lpCC);
...
// Загружаем DLL
COMMCONFIG commConfig;
HINSTANCE hInstance = ::LoadLibrary("serialui.dll");
if (hInstance == NULL) {
MessageBox("Не могу загрузить библиотеку \"serialui.dll\". Проверьте ее наличие!", "Ошибка", MB_OK | MB_ICONERROR);
return;
}
CommConfigDialogDLL* pFunction = (CommConfigDialogDLL*) ::GetProcAddress((HMODULE) hInstance, "CommConfigDialog");
if (pFunction == NULL) {
if (GetLastError() == 0x0000007F)
MessageBox("Не найдена функция CommConfigDialog", "Ошибка", MB_OK | MB_ICONERROR);
else {
CString str;
str.Format("Код ошибки: %u", GetLastError());
MessageBox(str, "Ошибка", MB_OK | MB_ICONERROR);
}
return;
}
memset(&commConfig, 0, sizeof COMMCONFIG);
commConfig.dwSize = sizeof(commConfig);
(*pFunction)(namePort, m_hWnd, &commConfig);
Система выдает ошибку: 0x0000007F, что соотв.-ет Не найдена указанная процедура.
Вопрос: Почему??? Что я делаю не правильно?
Пытаюсь вызвать CommConfigDialog неявным образом:
Пишу в свойствах проекта, т.е.: Project->Properties->Linker->Additional Dependencies="kernel32.lib winspool.lib". (без кавычек вообще то, просто здесь для "наглядности")
char namePort[100];
// Получили имя используемого порта
strcpy(namePort,((CComPort*) m_smsSender.GetPort())->GetNamePort());
COMMCONFIG commConfig;
memset(&commConfig, 0, sizeof COMMCONFIG);
commConfig.dwSize = sizeof(commConfig);
CommConfigDialog(((CComPort*) m_smsSender.GetPort())->GetNamePort(), m_hWnd, &commConfig);
Ничего не происходит, причем в других проектах работает!?
Подскажите пожалуйста, в чем дело, что не так, где я ошибаюсь.