首页 > 解决方案 > 使用外部 dll 函数时 C++ 访问冲突

问题描述

我试图将我的代码从 c# 转换为 c++。C# 代码调用 win32u.dll 中的本机函数。它在 c# 中工作,但是当我运行 c++ 函数时,出现此错误:https ://gyazo.com/694d768a7392ed67f849f4db4988d7e9

C#代码:

[DllImport("win32u.dll", CallingConvention = CallingConvention.Cdecl)]
    private static extern IntPtr NtTokenManagerCreateFlipObjectReturnTokenHandle(int code, void* param1, void* param2, void* param3);

    public static void StackOverflowExample()
    {
        NtTokenManagerCreateFlipObjectReturnTokenHandle(0, null, null, null);
    }

C++ 代码:

无效测试(){

HMODULE hModule = LoadLibrary(L"win32u.dll");

void* procAddr = (void*)GetProcAddress(hModule, "NtTokenManagerCreateFlipObjectReturnTokenHandle");

using tFunction = intptr_t(__stdcall*)(int, void*, void*, void*);
const auto control = static_cast<tFunction>((void*)procAddr);

control(0, NULL, NULL, NULL);

}

标签: c#c++

解决方案


推荐阅读