_fopen$UNIX2003 从 OpenSSL 问题引用

发布于 2024-09-09 08:33:38 字数 557 浏览 2 评论 0原文

我正在为 iPhone 应用程序使用编译的 OpenSSL。我按照此处的说明 http://www.x2on.de/kontakt/ 进行开发iPhone模拟器上的rsa操作。问题是我在构建项目时遇到此错误:

_fopen$UNIX2003 引用自

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

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

RSA * d2i_RSAPublicKey(RSA **a, const unsigned char **pp, 长长度);

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

感谢您的评论。

I'm using compiled OpenSSL for an iPhone app. I followed the instructions here http://www.x2on.de/kontakt/ so I could develop rsa operation on iPhone simulator. The problem is that I get this error when building the project:

_fopen$UNIX2003 referenced from

_BIO_new_file in libcrypto_i386.a(bss_file.o)
_file_ctrl in libcrypto_i386.a(bss_file.o) Symbol(s)
not found

Every time I invoke this function to get a public key:

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

Some places point this is a version problem so I should build openssl for a different architecture (currently using iPhoneOS3.2.sdk), is that right?

Thanks for your comments.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

娇纵 2024-09-16 08:33:38

只需创建新的 *.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

Just create new *.c file and copy this code to it:

#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);
}

Found this solution here: http://helpdesk.metaio.com/questions/35905/undefined-symbols-for-architecture-i386-xcode-6-ios-8-beta-6/36538

红焚 2024-09-16 08:33:38

都表明对于 Mac OS X,您的问题是为两个不同的 SDK 编译的两个不同的组件。

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

This and this both suggest for Mac OS X that your problem is two different components compiled for two different SDKs.

You should try cleaning the project's build output (make clean) and rebuilding everything with the same compiler/SDK.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文