日期:2014-05-16  浏览次数:21154 次

求助,在静态库中使用pthread_create的问题,急急!!!!!!
我自己制作了一个静态库libGet.a,静态库内部使用了pthread_create,编译能通过。然后在另外一个工程当中使用了这个静态库,编译的时候加了-lpthread选项,但是报错 “对‘pthread_create’未定义的引用”

下面是静态库的代码:
//get.h
#ifndef GET_H
#define GET_H
void Fun();
#endif // GET_H


//get.cpp
#include<stdio.h>
#include<pthread.h>
#include"get.h"
using namespace std;

//线程函数
void* Thread_Fun(void* p)
{
//简单的打印字符
    printf("SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSs\n");
    return 0;
}

//普通函数
void Fun()
{
//创建线程
    pthread_t t;
    pthread_create(&t,0,Thread_Fun,0);
    printf("OK!");

    int i;
    scanf("%d",&i);
}

然后创建静态库

get.o:get.cpp 
g++ -g -c  get.cpp get.h -lpthread

ar crv libGet.a get.o












//下面是使用静态库那个工程的代码
//main.cpp

#include"../ForTest/get.h"
int main(int argc, char *argv[])
{
    Fun();
    return 0;
}
//编译
g++ -g -o Get  main.o ../ForTest/libGet.a -lpthread

结果出错:
:在函数‘Fun()’中:../ForTest/get.cpp:17:对‘pthread_create’未定义的引用

------解决方案--------------------

------解决方案--------------------
g++ -g -o Get  main.o  -L../ForTest/ -lGet  -lpthread 

这样试试