1

私はかなりの数のWebサイトを調べましたが、どこでもc++ライブラリのラッパーを作成する方法を提供しています。

これで、アプリケーションに統合したい.cファイルができました。Objective cはcのオブジェクト指向の拡張であるため、実際にラッパーを作成する必要がありますか?はいの場合、それを行う方法は?必要がない場合は、プロジェクトでcコードを使用する方法を教えてください。

編集:わかりました..私がしなければならないことは、ファイルをプロジェクトに追加して関数を使用することですか?どのように正確にそれを行うのですか?通常のc呼び出しと同じように?パラメータを渡す必要がある場合はどうなりますか?

文字列を返す関数があるとしましょう。まず、その関数をどのように呼び出すのですか?文字列を返す場合、その値を通常のNSStringに格納できますか?または、AC文字列を宣言する必要がありますか?

前もって感謝します

4

1 に答える 1

1

通常どおりCコードを使用できます。

-(void)writeString:(NSString*)data toFile:(NSString*)filename {
    FILE* output = fopen([filename UTF8String], "w");
    fprintf(output, "%s", [data UTF8String]);
    fclose(output);
}

他の.cファイルの場合は、対応するヘッダーを#includeするだけです。次に、その関数を呼び出すことができます。

たとえば、これがfoo.hの場合:

int add(int a, int b);

そしてfoo.c:

#include "foo.h"

int add(int a, int b) {
    return a + b;
}

次に、Objective-Cコード(Bar.m)で:

-(int)addA:(int)a andB:(int)b {
    return add(a, b);
}

それは基本的にそこにあるラッパーです。ただし、Objective-CのCコードにはラッパーは必要ありません。Objective-C ++ソースである.mmファイルがあるため、C++関数でさえラッパーを必要としません。

編集:

パラメータを使用してC関数を呼び出すには、パラメータを使用して呼び出します。文字通り、有効なCプログラムはすべて有効なObjective-Cプログラムでもあります。.cファイルとしてコンパイルできる場合は、.mファイルとしてコンパイルされます。

C文字列(char*)をNSStringに変換するには:

const char* myString = "Hello!";
NSString* myNSString = [NSString stringWithUTF8String:myString];
于 2012-11-28T05:48:14.153 に答える