_fopen $ UNIX2003引用了OpenSSL问题

时间:2010-07-08 19:10:07

标签: c iphone openssl rsa

我正在使用已编译的OpenSSL用于iPhone应用程序。我按照http://www.x2on.de/kontakt/中的说明进行操作,这样我就可以在iPhone模拟器上开发rsa操作了。问题是我在构建项目时遇到了这个错误:

  

_fopen $ UNIX2003引自

     libpypto_i386.a中的

_BIO_new_file(bss_file.o)   libcrypto_i386.a中的_file_ctrl(bss_file.o)符号   找不到

每次我调用此函数获取公钥时:

  

RSA * d2i_RSAPublicKey(RSA ** a,const unsigned char ** pp,long length);

有些地方指出这是一个版本问题所以我应该为不同的架构(目前使用iPhoneOS3.2.sdk)构建openssl,是吗?

感谢您的评论。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

Thisthis都建议Mac OS X你的问题是为两个不同的SDK编译的两个不同的组件。

您应该尝试清理项目的构建输出(make clean)并使用相同的编译器/ SDK重建所有内容。