1
luikore 2013-09-20 19:38:14 +08:00
这是移植问题, 很难
sys/socket 和 net 系列可以换成 winsocks, ws2tcpip 和 iphlpapi, 但是不少 api 都不同 unistd 可以找个替代的 其他你就得自己弄明白都是干什么的, 一个个换替代品了... 可以参考一些跨平台语言的处理, 例如 https://github.com/ruby/ruby/blob/trunk/win32/win32.c 另外一个简单很多的方法是在 cygwin 编译, 什么都不用做, 最后多打包一个 cygwin.dll 就可以了 |
2
cctvsmg 2013-09-20 20:16:37 +08:00
一般都是在定义的时候
#if defined( __WIN32__ ) || defined( WIN32 ) || defined( _WIN32 ) ...... #enif 头部定义是这么定义 后面具体涉及到跨平台的一些操作 也分win32 linux mac几种定义 |
3
LazyZhu 2013-09-20 20:19:31 +08:00
我同意楼上的,还是用 Cygwin 编译吧,虽然中间多了一层,性能没MinG高,但确实简单。
|
4
leavic 2013-09-20 21:03:05 +08:00
其实C还好吧,各平台下的C库基本都还差不多,不像高级语言那样可能Windows平台有的库在Linux根本不存在,需要自己实现的。
方法基本就是楼上几位所说的了,如果一开始就要做跨平台的,初期架构就要考虑到这些东西,宏定义是必须的,你看看ecos的宏定义多得,都必须再单独做一个工具来管理了。 |
5
standin000 2013-09-21 23:16:45 +08:00
Makefile也得改。
|