Почему GetProcAddress не работает с функцией OutputDebugString
Я пытался использовать GetProcAddress
с несколькими функциями из kernel32.dll. Он работал нормально, за исключением функции "OutputDebugString".
Мой код:
typedef void(WINAPI *LPGETNUMBER)(LPCTSTR);
int main() {
const LPGETNUMBER pAddr = (LPGETNUMBER)GetProcAddress(GetModuleHandle((LPCSTR)("kernel32.dll")), "OutputDebugString");
if (NULL == pAddr) {
int32_t nLastErrorCode = GetLastError();
}
}
2 ответа
Там нет такой функции. Экспорт назван OutputDebugStringA
а также OutputDebugStringW
,
https://msdn.microsoft.com/en-us/library/windows/desktop/aa363362
OutputDebugString
макрос расширяется либо OutputDebugStringA
или же OutputDebugStringW
в зависимости от того, строите ли вы с ANSI или Unicode. Поэтому вам нужно выбрать один из них (желательно, но не обязательно, в зависимости от вашего режима сборки).