dwing吧 关注:5,621贴子:88,181

请问VC如何不链接任何C++运行库?

收藏回复

  • 219.148.51.*
实验VC6发现就连这样最简单的cpp也被链接上msvcrt.dll了
int main(){;}

请问这种最简单什么函数都不调用的程序,怎样不链接任何C++运行库?


1楼2008-09-09 18:29回复
    工程设置里可以选择静态库.
    不过msvcrt.dll这个从win98开始就一直是自带的,系统的很多程序都使用这个动态库.


    IP属地:北京禁言 |2楼2008-09-09 18:49
    回复
      • 219.148.51.*
      我想实验不链接任何运行库,所以将库静态链接也算是链接啊…


      3楼2008-09-09 19:04
      回复
        MSDN搜索: /NODEFAULTLIB


        IP属地:北京禁言 |4楼2008-09-09 19:39
        回复
          • 219.148.51.*
          明白了,非常感谢~以后会善用link /?的~


          5楼2008-09-09 20:14
          回复
            • 218.80.202.*
            windows下面用msvcrt.dll链接兼容性最好,所以一般程序可以考虑用msvcrt.dll,其他的libc,libcmt容易出兼容性问题


            7楼2008-09-10 10:27
            回复
              • 114.84.135.*
              不可能不链接运行库,因为运行库帮助你在台后做了n多工作,包括调用你定义的Main函数,没有这些工作,你的程序是运行不起来的。这些工作包括:初始化操作系统相关的全局变量、初始化堆(_heap_init)、初始化IO(ioinit)、获取命令行参数和环境变量、如果是C++,还要初始化全局变量等等工作。
              结论是,main函数并不是自己就运行起来的,它需要运行库的诸多帮助,才能运行。如果你不想使用运行库,那也可以把main函数(或者别的什么名字的函数)设置为入口函数,然后自己调用系统api来实现上面关于堆,关于io,关于初始化的一切工作,这样你就可以摆脱运行库了
              


              8楼2010-06-23 10:25
              回复
                • 222.82.222.*
                楼上明显没有深入过Runtime层面,这只是不调用mainCRTStartup而已。


                9楼2010-06-23 11:17
                回复
                  其实kernel32.dll和ntdll.dll里也有一些C的库函数,不多都是不涉及IO以及内存申请和释放的纯内存操作(比如sprintf, strlen这种)。


                  IP属地:美国禁言 |10楼2010-06-23 14:57
                  回复
                    • 125.73.56.*
                    ntdll.dll里的 sprintf 和 user32.dll 里的 wsprintf 都不支持 %f ...


                    11楼2010-06-23 15:27
                    回复
                      VC里很多基本运算都会默认使用C运行库,比如int64的乘法和除法,还有一些浮点运算,所以只能尽量避免,甚至要用汇编来写这些基本运算。


                      IP属地:美国禁言 |12楼2010-06-23 17:13
                      回复
                        最简单 LZ 自己用汇编 写程序
                        想用什么用什么....


                        IP属地:云南禁言 |13楼2010-07-06 11:12
                        回复
                          VC中自己定义一个入口,在编译参数中可以设置的
                          不过还是同意楼上的,汇编 应该更小一点
                          MASM用align:4 可以写出 600多字节的程序
                          NASM,FASM自己写PE结构,可以写出200多字节的


                          IP属地:江苏禁言 |14楼2010-07-06 21:49
                          回复
                            • 120.71.134.*
                            这篇讲的很清楚,达到了97字节。
                            http://www.phreedom.org/solar/code/tinype/


                            15楼2010-07-06 22:27
                            回复