Почему 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. Поэтому вам нужно выбрать один из них (желательно, но не обязательно, в зависимости от вашего режима сборки).

Другие вопросы по тегам