为什么 GetProcAddress 不能与 OutputDebugString 函数一起使用

Why does GetProcAddress not work with OutputDebugString function

我一直在尝试将 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();
    }
}

暂无该功能。导出名为 OutputDebugStringAOutputDebugStringW.

https://msdn.microsoft.com/en-us/library/windows/desktop/aa363362

OutputDebugString 是一个扩展为 OutputDebugStringAOutputDebugStringW 的宏,具体取决于您是使用 ANSI 还是 Unicode 构建。所以你需要选择其中之一(最好,但不一定,取决于你的构建模式)。