|
From: | Stefan Bidigaray |
Subject: | Re: pthread compilation problems |
Date: | Tue, 15 Sep 2015 14:18:39 -0400 |
The issue here, from what I can tell, is that pthread.h is not included in the right spot. It should be included in EngineController.h, not main.m like what you're doing. The error is essentially saying the pthread functions are not declared anywhere.
cross-post from: http://stackoverflow.com/questions/32555122/iso-c-forbids-declaration-of-pthread-cond-t-with-no-typeI'm getting some errors while trying to compile objective-c code that I didn't originally write. The platform is GNUstep on Windows 10. I'm very new to all this, so I suspect I'm making an elementary mistake.
Help!
Compilation Errors:
$ make This is gnustep-make 2.6.5. Type 'make print-gnustep-make-help' for help. Making all for tool stockfish... Compiling file main.m ... Compiling file EngineController.mm ... In file included from EngineController.mm:1:0: EngineController.h:6:4: error: ISO C++ forbids declaration of 'pthread_cond_t' with no type [-fpermissive] EngineController.h:6:19: error: expected ';' before 'WaitCondition' EngineController.h:7:4: error: ISO C++ forbids declaration of 'pthread_mutex_t' with no type [-fpermissive] EngineController.h:7:20: error: expected ';' before 'WaitConditionLock' EngineController.mm: In function '-[EngineController initEngine]': EngineController.mm:10:27: warning: suggest parentheses around assignment used as truth value [-Wparentheses] EngineController.mm:13:27: error: 'WaitConditionLock' was not declared in this scope EngineController.mm:13:50: error: 'pthread_mutex_init' was not declared in this scope EngineController.mm:14:26: error: 'WaitCondition' was not declared in this scope EngineController.mm:14:45: error: 'pthread_cond_init' was not declared in this scope EngineController.mm:18:12: warning: 'objc_object* objc_get_class(const char*)' is deprecated (declared at C:/GNUstep/GNUstep/System/Library/Headers/objc/runtime-deprecated.h:30) [-Wdeprecated-declarations] make[3]: *** [obj/stockfish.obj/EngineController.mm.o] Error 1 make[2]: *** [internal-tool-all_] Error 2 make[1]: *** [stockfish.all.tool.variables] Error 2 make: *** [internal-all] Error 2
GNUmakefile
include $(GNUSTEP_MAKEFILES)/common.make TOOL_NAME = stockfish stockfish_OBJC_FILES = main.m stockfish_OBJCC_FILES = EngineController.mm include $(GNUSTEP_MAKEFILES)/tool.make
main.m
#import <Foundation/Foundation.h> #import <pthread.h> #import <EngineController.h> int main (void) { [[Controller alloc] init]; return 0; }
EngineController.h
#import <Foundation/Foundation.h> @class Controller; @interface EngineController : NSObject { pthread_cond_t WaitCondition; pthread_mutex_t WaitConditionLock; BOOL ignoreBestmove; BOOL engineThreadShouldStop; BOOL engineThreadIsRunning; BOOL engineIsThinking; } @property (nonatomic, readonly) BOOL engineIsThinking; @property (nonatomic, readonly) BOOL engineThreadIsRunning; - (void)initEngine; @end extern EngineController *GlobalEngineController;
EngineController.mm
#import "EngineController.h" EngineController *GlobalEngineController; @implementation EngineController @synthesize engineIsThinking, engineThreadIsRunning; - (void)initEngine { if (self = [super init]) { // Initialize locks and conditions pthread_mutex_init(&WaitConditionLock, NULL); pthread_cond_init(&WaitCondition, NULL); // Start engine thread NSThread *thread = [[NSThread alloc] initWithTarget: self selector: @selector(startEngine:) object: nil]; [thread setStackSize: 0x100000]; [thread start]; [thread release]; ignoreBestmove = NO; engineIsThinking = NO; } GlobalEngineController = self; } @end
_______________________________________________
Discuss-gnustep mailing list
Discuss-gnustep@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnustep
[Prev in Thread] | Current Thread | [Next in Thread] |