Próbuję zaimportować openssl do mojego szybkiego projektu, ale kiedy dodaję #import "ras.h"
w xxx-Bridging-Header.h
, otrzymałem poniżej błąd kompilacji.Błąd kompilacji z deklaracją wskaźnika funkcji
<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 '('
The ras.h: 100 jest:
int (*rsa_mod_exp)(BIGNUM *r0,const BIGNUM *I,RSA *rsa,BN_CTX *ctx); /* Can be null */
Naprawiłem błąd przez zmianę nazwy const BIGNUM *I
do const BIGNUM *i
. Czy ktokolwiek wie, dlaczego ta postać jest tak wyjątkowa?
Zrobiłem kolejny test dzisiaj, wynik wygląda tak dziwnie. stworzyłem nowy projekt szybkiego napisał 3 pliki nagłówka:
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"
Dostałem błąd kompilacji ponownie!
w końcu usunięcie "#import" sprawia, że wszystko jest w porządku.
Why the character "I" could not work together with #import <xxx>?
To wygląda dziwnie (Zawiadomienie dodatkową przestrzeń pomiędzy liter OpenSSL): '.../OpenSSLRSAWrapper/o penssl/include/.. . ". – jww
to wygląda jak ktoś '#define I' gdzieś, możesz sprawdzić wynik z preprocesora, aby zobaczyć, co się stało –
Możemy użyć' #undef I', aby usunąć definicję. –