在linux写的程序代码,在windows环境下写linux代码

在windows环境下写linux代码

我在linux下写代码时一直找不到方便的工具,vi和emacs虽然提供了自动完成的功能,但是还是没有

vc+visual assistant方便,因此就产生了在windows下 linux代码的想法,这个企图曾经被狒狒鄙视为

“自做孽,不可活”,不过经过实践,村长我还是活过来了:-)

一、实验环境

1、装有win2k的机器一台,并装好了vc6+vs2003+visual assistant+source insight

2、装有linux as3的机器一台,安装了所有的软件包

二、步骤

1、将linux机器上的/usr/include拷贝到windows机器上的指定目录如

f:/linuxhead下

把/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include/也拷到刚才的目录下,该个名字为"gcchead"

2、在vs2003的头文件包含路径("工具"->"选项"->“项目”->"vc++目录"->"包含文件")加入刚才的

f:/linuxhead/include目录

f:/linuxhead/gcchead/include目录

并保证这两个目录在目录列表的最上方

3、建立一个空项目,加入一个 main.cpp文件,然后将常用的linux头文件包含进去,编译之。

//main.cpp的内容

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

int main(int argc ,char* argv[])

{

return 0;

}

编译时出现的错误依次为

1、bits/types.h(31): fatal error C1083: 无法打开包含文件:“stddef.h”: No such file or directory

说明没找到stddef.h文件

发现/linux目录下有这个文件,将linux目录加到包含目录里

2、bits/in.h(69): error C2380: “ip_opts”前的类型(构造函数有返回类型或是当前类型名称的非法重定义?)

因为

struct ip_opts

{

struct in_addr ip_dst; /* First hop; zero without source route. */

char ip_opts[40]; /* Actually variable in size. */

};成员名与结构名相同,vc认为是错误,所以只好改成员名为ip_opta

3、gcchead/include/stdarg.h(43): error C2146: 语法错误 : 缺少“;”(在标识符“__gnuc_va_list”的前面)

typedef __builtin_va_list __gnuc_va_list;

由于__builtin_va_list类型不存在,所以改为

typedef void* __gnuc_va_list;

4、stdlib.h(833): error C2065: “wchar_t” : 未声明的标识符

extern int mbtowc (wchar_t *__restrict __pwc,

__const char *__restrict __s, size_t __n) __THROW;

在前面增加一句

#include "linux/Nls.h"

5、linux/nls.h(7): error C2146: 语法错误 : 缺少“;”(在标识符“wchar_t”的前面)

typedef __u16 wchar_t;

增加

#include "asm/types.h"

6、asm/types.h(11): error C2144: 语法错误 : “char”的前面应有“;”

typedef __signed__ char __s8;

增加一句#define __signed__ signed

7、linux/dirent.h(6): error C2146: 语法错误 : 缺少“;”(在标识符“d_off”的前面)

__kernel_off_t d_off;

增加一行#include "asm/posix_types.h"

8、linux/dirent.h(12): error C2146: 语法错误 : 缺少“;”(在标识符“d_ino”的前面)

__u64 d_ino;

增加一行#include "asm/types.h"

并在asm/types.h文件里增加两行

typedef __signed__ long long __s64;

typedef unsigned long long __u64;

解决上述问题后,编译通过.

p.s网友超越无限曾告诉我magic c++也能实现我需要的功能,然而我下载了他的4.0使用版后,毛病百出,最后以失败告终

只好“自己动手、丰衣足食”了,呵呵

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值