静态编译/MTd和动态编译/MD

 

引例,我写了一个打印helloworld函数,

编译完成后将exe文件拷出来放到另一台机器里面,无法打开,怎么回事?


    
    printf也是由静态库或者动态库支持的,默认是动态库
   解决办法: 使用MTD拷出来就可以在另一个机子上运行

静态编译与动态编译的区别:
  1、动态编译的可执行文件需要附带一个的动态链接库,在执行时,需要调用其对应动态链接库中的命令。
  所以其优点一方面是缩小了执行文件本身的体积,另一方面是加快了编译速度,节省了系统资源。
  缺点一是哪怕是很简单的程序,只用到了链接库中的一两条命令,也需要附带一个相对庞大的链接库;二是如果其他计算机上没有安装对应的运行库,则用动态编译的可执行文件就不能运行。
  2、静态编译就是编译器在编译可执行文件的时候,将可执行文件需要调用的对应动态链接库(.so)中的部分提取出来,链接到可执行文件中去,使可执行文件在运行的时候不依赖于动态链接库。所以其优缺点与动态编译的可执行文件正好互补。

总结:静态编译将所有动态链接库全部整合到了.exe 文件中,拷贝到其他电脑上也可以运行,

动态编译不是,拷贝到其他电脑上需要将动态链接库也要拷贝过去。才能在其他电脑上运行。

如果设置完成后报错,那么重新生成解决方案就可以了

猜你喜欢

转载自blog.csdn.net/weixin_42053726/article/details/88364107
今日推荐