c# - 使用外部 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);
}
解决方案
推荐阅读
- python - 如何在 python 脚本上执行代码签名?
- javascript - 如何将相同的项目插入嵌套数组
- javascript - 如何从 API 调用附加到 WordPress 定制器中的选择框?
- windows - 无法使用来自 Windows 命令提示符的 URL 访问本地目录
- php - Wordpress 主题更新 - 如何不丢失对父主题的自定义?
- python-3.x - 如何连接每个组的连续行并将它们作为数据框中的列并计算每个组的出现次数?
- c# - 如何退出递归调用?
- javascript - 通过循环显示来自json的多个谷歌地图
- php - PHP 警告信息:count(): 参数必须是数组或实现 Countable 的对象
- oracle - 最近邻和点与线之间的距离