linux c改为windows,改了个linux下的c代码为windows版本

Windows的C++没有pthread_t类型,linux中有个pthread.h,很多站的VC代码,都不知道从哪包含来的,shit

网上看到有一个叫 POSIX Threads for Win32 的开源项目给出了一个功能比较完善的Windows下pthreads API的实现。

我用的2.7.0版的链接:ftp://sources.redhat.com/pub/pthreads-win32/pthreads-w32-2-7-0-release.exe。

简单使用

上面的exe文件是一个自解压文件,解压后,Pre-built.2目录中有编译所需要的头文件(include子目录)和库文件(lib子目录)。

一个简单的测试程序(main.cpp):

20080109010056480.gif#include20080109010056480.gif#include20080109010056480.gif#include20080109010056480.gif

20080109010056480.gifvoid*Function_t(void*Param)

20080109010056210.gif

20080109010056233.gif...{

20080109010056264.gif    printf("I am a thread!");

20080109010056264.gif    pthread_t myid=pthread_self();

20080109010056264.gif    printf("thread ID=%d", myid);

20080109010056264.gifreturnNULL;

20080109010056497.gif}20080109010056480.gif

20080109010056480.gifintmain()

20080109010056210.gif

20080109010056233.gif...{

20080109010056264.gif    pthread_t pid;

20080109010056264.gif    pthread_attr_t attr;

20080109010056264.gif    pthread_attr_init(&attr);

20080109010056264.gif    pthread_attr_setscope(&attr, PTHREAD_SCOPE_PROCESS);

20080109010056264.gif    pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);

20080109010056264.gif    pthread_create(&pid,&attr, Function_t, NULL);

20080109010056264.gif    printf("========================================");

20080109010056264.gif    getchar();

20080109010056264.gif    pthread_attr_destroy(&attr);

20080109010056264.gifreturn1;

20080109010056497.gif}

20080109010056480.gif》rem cl.bat

20080109010056480.gif

20080109010056480.gif》cl.exe main.cpp/c/I"c:\Pre-built.2\include"20080109010056480.gif

20080109010056480.gif》link.exe/out:main_cl.exe  main.obj/LIBPATH:"c:\Pre-built.2\lib"pthreadVC2.lib

使用VC++ 6.0或Visual Studio 2005来运行上面的程序

关键有两点:

1. 是将头文件(include子目录)和库文件(lib子目录)中的内容添加到VC++ 6.0或Visual Studio 2005开发环境对应的include和lib目录下。

具体来说(以添加include目录为例,添加lib目录类似):

图1:VC++ 6.0(添加include目录:工具--》选项--》目录)

20080109010056899.bmp

图2:Visual Studio 2005(添加include目录:tools--》options)

20080109010056941.bmp

2. 指定link时要连接的库的名称(pthreadVC2.lib)

图3:VC++ 6.0(工程--》设置--》连接)

20080109010056613.bmp

图4:Visual Studio 2005(project-->* property pages)

20080109010056694.bmp

不过最终还是带一个pthreadVC2.dll真恶心,搞半天还不如用cygwin

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值