xcode 6.3 beta
我在我的项目中使用libcrypto.a。
我的应用可以在我的ipod touch5(armv7)上编译和运行。
但是当我尝试在iphone5模拟器上运行我的应用程序时,我收到错误:
"_closedir$UNIX2003", referenced from:
_OPENSSL_DIR_end in libcrypto.a(o_dir.o)
"_fputs$UNIX2003", referenced from:
_write_string in libcrypto.a(ui_openssl.o)
_read_string in libcrypto.a(ui_openssl.o)
"_opendir$INODE64$UNIX2003", referenced from:
_OPENSSL_DIR_read in libcrypto.a(o_dir.o)
"_readdir$INODE64", referenced from:
_OPENSSL_DIR_read in libcrypto.a(o_dir.o)
ld: symbol(s) not found for architecture i386
然后我使用命令检查了libcrypto.a我正在使用支持的架构:
lipo -info libcrypto.a
并得到结果:
Architectures in the fat file: libcrypto.a are: i386 armv7 armv7s arm64
任何建议都将不胜感激,谢谢:)
答案 0 :(得分:6)
在任何地方创建新的m文件。 并在此处定义所有缺失的函数:
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <dirent.h>
#include <fnmatch.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);
}
DIR * opendir$INODE64( char * dirName )
{
return opendir( dirName );
}
struct dirent * readdir$INODE64( DIR * dir )
{
return readdir( dir );
}