3

libssh2.dylib ( http://www.libssh2.orgのlibssh2 ライブラリを使用して Matthew Wilkinson によってコンパイルされたサードパーティ ライブラリ) を xcode プロジェクトにリンクしようとしていますが、次のコードを試してみると:

const char * libssh2_version(int required_version);
printf("libssh2 version: %s", libssh2_version(0));

エラーは次のとおりです。

ld: warning: in /iaN's Work/Developer/Apple/iPhone/apps/PortScanner/libssh2.1.dylib,    file was built for armv6 which is not the architecture being linked (i386)
Undefined symbols:
"_libssh2_version", referenced from:
-[Request connect] in Request.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

libssh2 API を試すと、このエラーが発生します。誰でも何が問題なのか手がかりを持っていますか? これらは私がプロジェクトにリンクしたファイルです:

// SSH Librarys 
#include "libssh2_config.h"
#include "libssh2.h"
#include "libssh2_sftp.h"

#ifdef HAVE_WINDOWS_H
#include <windows.h>
#endif
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#endif

#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
# ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif

#include <sys/types.h>
#include <fcntl.h>
#include <errno.h>
#include <stdio.h>
#include <ctype.h>

また、libssh2.dylib ファイルをフレームワークにリンクし、[ビルド] タブの [ヘッダー ファイルの検索] への再帰パスをファイル libssh2.a、libgcrypt.a、libgpg-error.a に追加しました。

4

2 に答える 2

3

これらはまったく異なる CPU アーキテクチャです。一方を対象としたプリコンパイル済みライブラリを使用しようとしている場合、もう一方では使用できません。必要なプラットフォーム (iPhone の場合は armv6、Mac の場合は i386) を対象とするプリコンパイル済みライブラリを見つける必要があります。

iPhoneにタグを付けたので、適切なライブラリを持っているかもしれませんが、プロジェクト設定が台無しになっている可能性があります.Base SDKが正しく設定されていることを確認してください(執筆時点では4.1)。これが正しければ、おそらく i386 ターゲット オプションはまったく表示されず、4.1 SDK を選択するとすぐにデフォルトで "armv6 armv7" になります。

于 2010-09-24T22:59:02.637 に答える
0

ライブラリはarmv6用に構築されており(デバイスで実行するため)、i386アプリにリンクしようとしています(シミュレータで実行するため)。これは明らかにうまくいきません。

于 2010-09-24T23:08:00.710 に答える