2010-07-08 20 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