Hi,
Below is the source file and make file I 'm using. while building I'm getting the below error in the console. From the error its evident that its unable to find function definition .Can anybody help me to fix this.

Console output:-
**** Build of configuration Debug for project Threading ****

make -k all
Building file: ../Threading01.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"Threading01.d" -MT"Threading01.d" -o"Threading01.o" "../Threading01.cpp"
Finished building: ../Threading01.cpp

Building target: Threading.exe
Invoking: GCC C++ Linker
g++ -o"Threading.exe" ./Threading01.o
./Threading01.o: In function `main':
D:\z_sdk\Threading\Debug/../Threading01.cpp:28: undefined reference to `_imp__pthread_create'
D:\z_sdk\Threading\Debug/../Threading01.cpp:38: undefined reference to `_imp__pthread_join'
collect2: ld returned 1 exit status
make: *** [Threading.exe] Error 1
make: Target `all' not remade because of errors.
Build complete for project Threading

My Code:-

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


void *threadFunc(void *arg)
{
	char *str;
	int i = 0;

	str=(char*)arg;

	while(i < 110 )
	{
		
		printf("threadFunc  says: %s\n",str);
		++i;
	}

	return NULL;
}

int main(void)
{
	pthread_t pth;	// this is our thread identifier
	int i = 0;

	pthread_create(&pth,NULL,threadFunc,(void *)"foo");
	
	while(i < 100)
	{
		
		printf("main is running...\n");
		++i;
	}

	printf("main waiting for thread to terminate...\n");
	pthread_join(pth,NULL);

	return 0;
}

Below is the make file

all:clean hello

hello:Threading01.o
	g++ Threading01.o -o hello
	
Threading01.o:Threading01.cpp
	g++ -lpthread Threading01.cpp
clean:
	rm -rf *o hello

Recommended Answers

All 2 Replies

FYI I'm using Eclipse 3.2 with CDT plugin

Looks like you're not linking the pthreads library. You'll need to add a reference to the library to your project. If the FAQ I linked doesn't work for you, look for something similar in the project settings--perhaps someone who is familiar with CDT (i.e., not me :)) knows where to find it.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.