VS 多线程调试和多线程DLL调试有什么区别
求简单明了的解释。win32程序运行时报应用程序配置不当,把多线程DLL改成多线程,就可以了。我分不清配置里的静态库和动态库、应用程序和运行时环境的MT等...
求简单明了的解释。win32程序运行时报应用程序配置不当,把多线程DLL改成多线程,就可以了。我分不清配置里的静态库和动态库、应用程序和运行时环境的MT等
展开
2个回答
展开全部
区别是动态链接还是静态链接C运行时库(C runtime Library, CRT)。
如果是动态链接(MD/MDd),你的程序就依赖C运行时的动态链接库(比如VS2010的msvr100.dll),当你的程序在其他没有这个dll的电脑上运行就会出现错误(找不到这个dll)。
如果是静态链接(MT/MTD),C运行库直接链接到你的程序里,你的程序就不依赖C运行时库的dll了。
微软是推荐是用动态链接的,因为这种链接方式可以减少可执行文件的大小、可以减少内存的使用、避免链接问题。
如果是动态链接(MD/MDd),你的程序就依赖C运行时的动态链接库(比如VS2010的msvr100.dll),当你的程序在其他没有这个dll的电脑上运行就会出现错误(找不到这个dll)。
如果是静态链接(MT/MTD),C运行库直接链接到你的程序里,你的程序就不依赖C运行时库的dll了。
微软是推荐是用动态链接的,因为这种链接方式可以减少可执行文件的大小、可以减少内存的使用、避免链接问题。
追问
用MD时 报应用程序配置错误,有没有什么工具能让我知道exe到底是缺少哪些库,我可以手动加上?
追答
我以前用的工具忘记名字了,你试试这个hapdepends!
你如果是动态链接,在目标平台上直接安装相应版本的“VC++可再发行组件包”就可以了!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询