0

かなり長い間いくつかの c / c++ コードを使用しており、プロジェクトで正常に動作しています。コードから .a を作成しようとしていますが、1 つの項目を除いてすべて問題ありません。

ACルーチンがあります、それを呼びましょう

void init(sometype *)

これは XCODE で c++ ファイルとしてマークされ、.h ファイルがあります。

そこには

#if defined(__cplusplus)
extern "C"
{
#endif

void init(sometype *);

#if defined(__cplusplus)
}
#endif

このすべてのリンクは、すべてを 1 つのアプリとしてリンクするときに目的の C から呼び出したときに見つかります

このコードが .a に含まれていて、別のプロジェクトからリンクしようとすると、....

Undefined symbols for architecture armv6:
  "__Znam", referenced from:
      _init in libMy.a(Objectfile.o)
ld: symbol(s) not found for architecture armv6
clang: error: linker command failed with exit code 1 (use -v to see invocation)

C++ の初期化ルーチンを取得しているように見えますか? find をリンクしたときの .o は、.a 用にコンパイルしたときと同じように見えます (__Znam はそこにあります)。

それで、どのライブラリが欠けていますか????

舞台裏に含まれていないものを見つけるために、さらに掘り下げます。

- - - - - 新情報 - - - - - -

問題は、「new」キーワードがこのルーチンで機能していないことであり、これはおそらく適切にリンクされていないルーチンです。

だから、次のような行...

var->output = new Int32*[10];

正常に動作していません。.....

4

0 に答える 0