2010-07-08 19 views
1

我正在使用已編譯的OpenSSL for iPhone應用程序。我按照這裏的說明http://www.x2on.de/kontakt/,所以我可以在iPhone模擬器上開發rsa操作。問題是,我建設項目時出現此錯誤:

_fopen在libcrypto_i386.a(bss_file.o)從

_BIO_new_file引用$ UNIX2003 _file_ctrl在libcrypto_i386.a(bss_file.o)符號(S) 沒有找到

我每次調用這個函數來獲取一個公共密鑰:

RSA * d2i_RSAP ublicKey(RSA ** a,const unsigned char ** pp,長度很長);

有些地方指出這是一個版本問題,所以我應該建立一個不同的架構openssl(目前使用iPhoneOS3.2.sdk),是嗎?

感謝您的意見。

回答

1

Thisthis都暗示對於Mac OS X,您的問題是針對兩個不同的SDK編譯的兩個不同組件。

您應該嘗試清理項目的構建輸出(make clean)並使用相同的編譯器/ SDK重建所有內容。

+0

是的,它可能是,我結束了複製自己的音樂庫,以我的項目,它的工作原理現在。不過,我記得編輯我的Makefile與更高版本(他們的iPhone 3.1.2,我的3.2)。我會遵照你的建議。非常感謝。 – chuckSaldana 2010-07-09 16:33:19

5

只要創建新的*.c文件,並複製此代碼到它:

#include <stdio.h> 
#include <unistd.h> 
#include <string.h> 
#include <stdlib.h> 

FILE *fopen$UNIX2003(const char *filename, const char *mode) 
{ 
    return fopen(filename, mode); 
} 

int fputs$UNIX2003(const char *res1, FILE *res2){ 
    return fputs(res1,res2); 
} 

int nanosleep$UNIX2003(int val){ 
    return usleep(val); 
} 

char* strerror$UNIX2003(int errornum){ 
    return strerror(errornum); 
} 

double strtod$UNIX2003(const char *nptr, char **endptr){ 
    return strtod(nptr, endptr); 
} 

size_t fwrite$UNIX2003(const void *a, size_t b, size_t c, FILE *d) 
{ 
    return fwrite(a, b, c, d); 
} 

發現這個解決方案在這裏:http://helpdesk.metaio.com/questions/35905/undefined-symbols-for-architecture-i386-xcode-6-ios-8-beta-6/36538