|
Archives
D Programming
DD.gnu digitalmars.D digitalmars.D.bugs digitalmars.D.dtl digitalmars.D.dwt digitalmars.D.announce digitalmars.D.learn digitalmars.D.debugger C/C++ Programming
c++c++.announce c++.atl c++.beta c++.chat c++.command-line c++.dos c++.dos.16-bits c++.dos.32-bits c++.idde c++.mfc c++.rtl c++.stl c++.stl.hp c++.stl.port c++.stl.sgi c++.stlsoft c++.windows c++.windows.16-bits c++.windows.32-bits c++.wxwindows digitalmars.empire digitalmars.DMDScript |
c++.windows.32-bits - win32 pthread using dmc
used dmc to build win32-pthread (http://sources.redhat.com/pthreads-win32/). it compiles and links wihtout problems, however, I get runtime error for a very simple program. I want to use win32-pthread because it is very similar to pthread on unix and my code becomes a LOT more portable (see below). I have a feeling I compiled | linked the pthread library incorrectly that is why I am getting the error. Unfortunately I can not make a smaller test case because it includes the entire pthread library that I built (from the link above). /* This is the error that I got in a popup window. */ unknown has generated errors and will be closed by Windows You will need to restart the program An error log is being created /* hello.c * dmc -I.;c:dminclude -WA -v2 hello.c pthread.lib */ #ifdef(_WIN32) #include "pthread.h" #else /* POSIX-like */ #include <pthread.h> #endif #include <stdio.h> #define NUM_THREADS 5 void *sayhello(void *threadid) { printf("\n%d: Hello World!\n", threadid); pthread_exit(NULL); return; } int main(int argc, char *argv[]) { pthread_t threads[NUM_THREADS]; int rc, t; for(t=0;t<NUM_THREADS;t++){ printf("Creating thread %d\n", t); rc = pthread_create(&threads[t], NULL, sayhello, (void *)t); if (rc){ printf("ERROR; return code from pthread_create() is %d\n", rc); /* exit(-1); */ } } pthread_exit(NULL); } Anuj Goyal Jun 22 2004
On which line in the sample app does you application cause the error? Arjan Anuj Goyal wrote:used dmc to build win32-pthread (http://sources.redhat.com/pthreads-win32/). it compiles and links wihtout problems, however, I get runtime error for a very simple program. I want to use win32-pthread because it is very similar to pthread on unix and my code becomes a LOT more portable (see below). I have a feeling I compiled | linked the pthread library incorrectly that is why I am getting the error. Unfortunately I can not make a smaller test case because it includes the entire pthread library that I built (from the link above). /* This is the error that I got in a popup window. */ unknown has generated errors and will be closed by Windows You will need to restart the program An error log is being created /* hello.c * dmc -I.;c:dminclude -WA -v2 hello.c pthread.lib */ #ifdef(_WIN32) #include "pthread.h" #else /* POSIX-like */ #include <pthread.h> #endif #include <stdio.h> #define NUM_THREADS 5 void *sayhello(void *threadid) { printf("\n%d: Hello World!\n", threadid); pthread_exit(NULL); return; } int main(int argc, char *argv[]) { pthread_t threads[NUM_THREADS]; int rc, t; for(t=0;t<NUM_THREADS;t++){ printf("Creating thread %d\n", t); rc = pthread_create(&threads[t], NULL, sayhello, (void *)t); if (rc){ printf("ERROR; return code from pthread_create() is %d\n", rc); /* exit(-1); */ } } pthread_exit(NULL); } Anuj Goyal Jun 23 2004
on this line: rc = pthread_create(&threads[t], NULL, sayhello, (void *)t); feel free to contact me off list, I can show you how I compiled the pthread lib/dll. I did the compile,link in one swooop ...did the download from here ftp://sources.redhat.com/pub/pthreads-win32 and get this file ftp://sources.redhat.com/pub/pthreads-win32/pthreads-2004-06-22.exe after unzip, goto the pthreads dir: dmc -I.;c:\dm\include -D_MT -DHAVE_CONFIG_H -WD pthread.c user32.lib+kernel32.lib+wsock32.lib -L/impl rem _MT is needed to pick up _beginthread() in c:\dm\include\process.h rem i dunno why wsock32.lib is needed! I read your page: http://www.arjanknepper.com/Programming/C++/C++.html does everything on this page still hold true? MS has a reasonably standards compliant compiler VS.NET 2005 (still slower than digital mars) but I think they are giving away their compiler for free these days (at least VS.NET 2003 is free off the web) I really like dmc, but I wish there were more examples of how to use it. In article <cbbahi$23un$1 digitaldaemon.com>, Arjan Knepper says...On which line in the sample app does you application cause the error? Arjan Anuj Goyal wrote:used dmc to build win32-pthread (http://sources.redhat.com/pthreads-win32/). it compiles and links wihtout problems, however, I get runtime error for a very simple program. I want to use win32-pthread because it is very similar to pthread on unix and my code becomes a LOT more portable (see below). I have a feeling I compiled | linked the pthread library incorrectly that is why I am getting the error. Unfortunately I can not make a smaller test case because it includes the entire pthread library that I built (from the link above). /* This is the error that I got in a popup window. */ unknown has generated errors and will be closed by Windows You will need to restart the program An error log is being created /* hello.c * dmc -I.;c:dminclude -WA -v2 hello.c pthread.lib */ #ifdef(_WIN32) #include "pthread.h" #else /* POSIX-like */ #include <pthread.h> #endif #include <stdio.h> #define NUM_THREADS 5 void *sayhello(void *threadid) { printf("\n%d: Hello World!\n", threadid); pthread_exit(NULL); return; } int main(int argc, char *argv[]) { pthread_t threads[NUM_THREADS]; int rc, t; for(t=0;t<NUM_THREADS;t++){ printf("Creating thread %d\n", t); rc = pthread_create(&threads[t], NULL, sayhello, (void *)t); if (rc){ printf("ERROR; return code from pthread_create() is %d\n", rc); /* exit(-1); */ } } pthread_exit(NULL); } Anuj Goyal Jun 23 2004
Anuj Goyal wrote:on this line: rc = pthread_create(&threads[t], NULL, sayhello, (void *)t); Jun 24 2004
yup, I choose c setjmp/longjmp and also modified config.h I can post my changes if you are interested, just a few lines. In article <cbe3lc$bml$1 digitaldaemon.com>, Arjan Knepper says...Anuj Goyal wrote:on this line: rc = pthread_create(&threads[t], NULL, sayhello, (void *)t); Jun 25 2004
Anuj Goyal schrieb:used dmc to build win32-pthread (http://sources.redhat.com/pthreads-win32/). it compiles and links wihtout problems, however, I get runtime error for a very simple program. I want to use win32-pthread because it is very similar to pthread on unix and my code becomes a LOT more portable (see below). I have a feeling I compiled | linked the pthread library incorrectly that is why I am getting the error. Unfortunately I can not make a smaller test case because it includes the entire pthread library that I built (from the link above). Jun 25 2004
These are the changes I made to config.h (for win32-pthread), I added these lines before the last "#endif" #ifdef __DMC__ /*#define HAVE_SIGSET_T // DMC seems to define sigset_t for M_XENIX and M_UNIX only */ #define HAVE_SIGNAL_H #define HAVE_C_INLINE /*#define HAVE_MODE_T // DMC seems to define mode_t for M_XENIX and M_UNIX only */ #endif //__DMC__ There are some other minor changes as well. I have attached them. (mostly adding or checking for __DMC__) Jun 25 2004
Anuj Goyal schrieb:These are the changes I made to config.h (for win32-pthread), I added these lines before the last "#endif" Jun 26 2004
hmm you're right, I tried compiling with -a8 and still got the same error
message after trying it out on my small "hello.exe" (after the relink of course)
structs in the pthread-win32 code.
implement.h (15)
C:\workdmc\pthread>grep "^struct" imp*.h
struct pthread_t_
struct pthread_attr_t_
struct sem_t_
struct pthread_mutex_t_
struct pthread_mutexattr_t_
struct pthread_spinlock_t_
struct pthread_barrier_t_
struct pthread_barrierattr_t_
struct pthread_key_t_
struct ThreadParms
struct pthread_cond_t_
struct pthread_condattr_t_
struct pthread_rwlock_t_
struct pthread_rwlockattr_t_
struct ThreadKeyAssoc
pthread.h (3)
C:\workdmc\pthread>grep "^struct" p*.h
struct timespec {
struct pthread_once_t_
struct ptw32_cleanup_t
sched.h (1) struct sched_param
C:\workdmc\pthread>grep "^struct" sc*.h
struct sched_param {
Jun 26 2004
|