2014-06-19 10 views
16

मैं अपने स्विफ्ट प्रोजेक्ट में openssl आयात करने की कोशिश कर रहा हूं, लेकिन जब मैं xxx-Bridging-Header.h में #import "ras.h" जोड़ता हूं, तो मुझे नीचे संकलन त्रुटि मिली है।फ़ंक्शन पॉइंटर घोषणा के साथ संकलन त्रुटि

<unknown>:0: error: /Users/wenyun/workspace/newsvn/newios/ios/VanJoyPay2/VanJoyPay2/opensource/OpenSSLRSAWrapper/openssl/include/openssl/rsa.h:100: expected ')' 
<unknown>:0: note: /Users/wenyun/workspace/newsvn/newios/ios/VanJoyPay2/VanJoyPay2/opensource/OpenSSLRSAWrapper/o penssl/include/openssl/rsa.h:100: to match this '(' 
ras.h

: 100 है:

int (*rsa_mod_exp)(BIGNUM *r0,const BIGNUM *I,RSA *rsa,BN_CTX *ctx); /* Can be null */ 

मैं const BIGNUM *Iconst BIGNUM *i को नाम बदलकर त्रुटि तय की। क्या किसी को पता है कि चरित्र I इतना खास क्यों है?

मैंने आज एक और परीक्षण किया, परिणाम इतना अजीब लग रहा है। मैं एक नया तेजी से प्रोजेक्ट बनाया, ने लिखा 3 हेडर फाइल:

test.h 
int test(char *I); 

test2.h 
#import "test3.h" 
#import <Foundation/Foundation.h> 

test3.h 
int test3(); 


xxx-Bridging-Header.h 
#import "test2.h" 
#import "test.h" 

मैं फिर से संकलन त्रुटि मिल गया है!

आखिरकार, "#import" को हटाकर सबकुछ ठीक हो जाता है।

Why the character "I" could not work together with #import <xxx>?

+0

यह अजीब लग रहा है (OpenSSL के अक्षरों के बीच में अतिरिक्त स्थान नोटिस):

यहाँ हमलावर लाइनों संकलक द्वारा सूचित कर रहे '.../OpenSSLRSAWrapper/ओ penssl/शामिल/.. .'। – jww

+2

ऐसा लगता है कि किसी के पास कहीं भी 'डिफाईन' है, आप प्रीप्रोसेसर से परिणाम देख सकते हैं कि –

+0

क्या हुआ है हम परिभाषा को हटाने के लिए '#undef I' का उपयोग कर सकते हैं। –

उत्तर

9

समस्या स्विफ्ट से बंधा नहीं है। /usr/include/complex.h फ़ाइल में की पिछली परिभाषा के कारण यह होता है (Brian Chen अनुमान लगाया गया है)।

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.1.sdk/usr/include/complex.h:42:11: note: expanded from macro 'I' 
#define I _Complex_I 
+0

मैं एक इन-ऐप खरीद रसीद को सत्यापित करने के लिए एक त्वरित परियोजना में ओपनएसएसएल का उपयोग कर एक ही समस्या में भाग गया। मुझे x509.h शामिल करने की आवश्यकता है जो ऊपर की त्रुटि को जन्म देती है। मैं पूरे आईओएस विकास के लिए थोडा नया हूं और मुझे यकीन नहीं है कि इस मुद्दे को हल करने का सही तरीका क्या है? क्या मैं rsa.h में I का नाम बदलना ठीक कर रहा हूं? – Soko

+1

हां, बिल्ड निर्माण को ठीक करने के लिए यह पर्याप्त होना चाहिए। –

संबंधित मुद्दे