gpt4 book ai didi

C# 包装器到 C++ 函数 - 运行一次,工作正常。运行两次,程序挂了

转载 作者:行者123 更新时间:2023-11-28 07:00:51 25 4
gpt4 key购买 nike

所以我正在使用 C# 包装器到 C++ 库,并尝试添加另一个函数。我已经在 C# 中创建了函数声明并且它正在运行。但它只能工作一次。当我第二次尝试运行它时,程序挂起。

互操作定义和声明位于 https://github.com/joshglenn/interception-cs/blob/master/kchordr/Program.cs

我正在运行的代码在这里:https://github.com/joshglenn/interception-cs/blob/master/kchordr/InterceptionDemoForm.cs

第一次运行良好但在第二次启动时挂起的函数是 GetHardwareID()。

我的问题是,我该如何解决这个问题?这看起来是内存泄漏吗?

最佳答案

要从 WinAPI 调用中获取错误代码,请使用 Marshal.GetLastWin32Error();还记得用“Set Last Error = true”修饰你的调用;

这是我在任务栏图标上调用弹出窗口的示例:

[DllImport("shell32.dll",SetLastError=true)]
public static extern bool Shell_NotifyIcon(uint dwMessage, [In] ref NotifyIconData pnid);

用法:

//call your code like you usually call the method
bool callResult = Caller.Shell_NotifyIcon((uint)NotifyIconMessage.NIM_ADD, ref n);

//afther that call the GetLastError to get the error code
int errorCode = Marshal.GetLastWin32Error();

google错误代码,看看是什么意思

关于C# 包装器到 C++ 函数 - 运行一次,工作正常。运行两次,程序挂了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22509743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com