1.debug和Release的区别
Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。
Debug 和 Release 的真正秘密,在于一组编译选项。下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd /Fo,但区别并不重要,通常他们也不会引起 Release 版错误,在此不讨论)
DEBUG:/MDd /MLd 或 /MTd 使用 Debug runtime library(调试版本的运行时刻函数库)
release;/MD /ML 或 /MT 使用发布版本的运行时刻函数库
在工程上右键-》属性-》c/c -》代码生成-》运行库;
多线程调试Dll (/MDd) 对应的是MD_DynamicDebug
多线程Dll (/MD) 对应的是MD_DynamicRelease
多线程(/MT) 对应的是MD_StaticRelease
多线程(/MTd)对应的是MD_StaticDebug
注意:
不能将debug和release版的DLL(动态链接库)混合在一起使用。debug都是debug版,release版都是release版。 解决办法是将debug和release的程序分别放在主程序的debug和release目录下
2.何为动态链接库DLL(Dynamic-link library,缩写为DLL)
dll只是一组源代码的模块,每个模块包含一些可供应用程序或者其他dll调用的函数,在应用程序调用一个dll里面的函数的时候,操作系统会将dll的文件映像映射到进程的地址空间中,这样进程中所有的线程就可以调用dll中的函数了
dll加载完成后,这个时候dll对于进程中的线程来说只是一些被放在地址进程空间附加的代码和数据,操作系统为了节省内存空间,同一个dll在内存中只有一个,也就是说如果你的的两个应用程序都需要加载user32.dll,那么操作系统也只会加载一次user32.dll到内存中
ps:有main函数的代码可以编译成二进制,其他的则编译成库文件。链接时,把库文件链到二进制上,就可以运行
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved