visual studio 运行库 mt md

我们经常运行软件的时候提示运行库缺失,导致程序运行不了,这个时候我们就要下载对应的运行库,这个运行就是c语言的运行库,提示缺失是因为我们编译程序的选择md ,C语言的运行库用的dll。那么必须系统带有运行库,否则运行失败,这样子我们采用2种做法,一种采用mt 静态编译,那么c语言库就在程序里面,要么我们自己把运行库直接放在程序里面,这样子也能正常运行。当初用动态编译是为了减少程序大小,感觉带了运行库,跟静态编译差别不打,如果小程序还是建议静态编译。

SendMessage WM_COPYDATA 拒绝错误

背景

SendMessage WM_COPYDATA 我们经常用来进程通信,今天突然改了一下代码加载方式,突然发现消息无法通信,我不断的通过打印日志来确定问题,最终觉得自己代码没有问题,但就是无法发送消息到另外一个进程。突然想到GetLastError() 看一下有什么错误,通过打印发现出现错误5,然后通过vs 带的错误查询,发现是拒绝错误。

解决方案

通过GetLastError, 我的脑海大概猜测是权限问题,于是搜索SendMessage WM_COPYDATA 拒绝错误,然后我找到这篇 https://blog.csdn.net/aa1991/article/details/19504557 ,固然验证是权限问题。如果是按照文章调用 ChangeWindowMessageFilter(WM_COPYDATA, 1); 就可以了

总结

排错需要更加系统化,尽可能了解不同知识点,更重要是思考方式,学会不断调节