-1

.oファイルのセットから動的libを作成しようとしていますが、作成する場合

gcc -dynamiclib -current_version 1.0 mymod.o -o mylib.dylib

また

ld * .o -o mylib.dylib

次のようなエラーがたくさん発生します。

"_objc_msgSend"、参照元:-[NSObject(NSObject_SBJSON)JSONFragment] in NSObject + SBJSON.o

「operatornew(unsigned long)」、参照元:MStatistic.oのMStatistic :: instance()StatisticObserver.oのStatisticProfileLoggingObserver :: instance()

ld:アーキテクチャx86_64のシンボルが見つかりません

それを解決して私の.dylibを取得する方法を教えてください。

4

2 に答える 2

3

-undefined dynamic_lookupオプションとしてld, or:
-Wl,-undefined -Wl,dynamic_lookupgccorに渡すことができますclang(リンカーに渡します)。

于 2012-12-30T11:24:09.350 に答える
0

この行から:

ld: symbol(s) not found for architecture x86_64

32 ビット アーキテクチャのみをビルドする make ファイルを含むライブラリをビルドしているようです。

32 ビットと 64 ビットの両方をビルドするには、ビルドするすべてのライブラリ/フレームワークの makefile を変更する必要があります。実際には、出荷されているすべての MacOS マシンは 64 ビットに対応しているため、64 ビット用にのみビルドしても安全かもしれません。

コンパイル/リンク行に、次のようなものを追加します: " -arch x86_64" これにより、64 ビット側用にコンパイルされるはずです。32 ビットと 64 ビットの両方を実行するには、基本的に、コンパイルとリンクの行を独自の " " 行-arch i386と " -arch x86_64" 行で複製する必要があります。

于 2012-12-30T11:23:07.007 に答える