C语言如何更换头部包含 - V2EX
nazor
V2EX    C

C语言如何更换头部包含

  •  
  •   nazor Sep 20, 2013 via Android 1781 views
    This topic created in 4621 days ago, the information mentioned may be changed or developed.
    一个程序,头部引用的库全是linux下的,请问如何更换为win下的库文件?
    以下是linux下的:
    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <string.h>
    #include <netdb.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <netinet/ip.h>
    #include <netinet/udp.h>
    #include <arpa/inet.h>
    #include <net/if.h>
    #include <sys/socket.h>
    #include <syslog.h>
    #include <netinet/in.h>
    #include <stdio.h>
    5 replies    1970-01-01 08:00:00 +08:00
    luikore
        1
    luikore  
       Sep 20, 2013
    这是移植问题, 很难

    sys/socket 和 net 系列可以换成 winsocks, ws2tcpip 和 iphlpapi, 但是不少 api 都不同
    unistd 可以找个替代的

    其他你就得自己弄明白都是干什么的, 一个个换替代品了... 可以参考一些跨平台语言的处理, 例如 https://github.com/ruby/ruby/blob/trunk/win32/win32.c

    另外一个简单很多的方法是在 cygwin 编译, 什么都不用做, 最后多打包一个 cygwin.dll 就可以了
    cctvsmg
        2
    cctvsmg  
       Sep 20, 2013
    一般都是在定义的时候
    #if defined( __WIN32__ ) || defined( WIN32 ) || defined( _WIN32 )
    ......
    #enif

    头部定义是这么定义
    后面具体涉及到跨平台的一些操作
    也分win32 linux mac几种定义
    LazyZhu
        3
    LazyZhu  
    &nsp;  Sep 20, 2013
    我同意楼上的,还是用 Cygwin 编译吧,虽然中间多了一层,性能没MinG高,但确实简单。
    leavic
        4
    leavic  
       Sep 20, 2013
    其实C还好吧,各平台下的C库基本都还差不多,不像高级语言那样可能Windows平台有的库在Linux根本不存在,需要自己实现的。
    方法基本就是楼上几位所说的了,如果一开始就要做跨平台的,初期架构就要考虑到这些东西,宏定义是必须的,你看看ecos的宏定义多得,都必须再单独做一个工具来管理了。
    standin000
        5
    standin000  
       Sep 21, 2013
    Makefile也得改。
    About     Help     Advertise     Blog     API     FAQ     Solana     977 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 23:02 PVG 07:02 LAX 16:02 JFK 19:02
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86