C++ で記述された options というクラスがあります。ヘッダー情報は次のとおりです。
class Options {
public:
string filename;
string chunkDir;
string outFilename;
string inFilename;
BOOL compress;
BOOL extract;
BOOL print;
BOOL reconstruct;
int bits;
Options(string inFilename);
Options(int argc, char** argv);
void unsupported(string s);
void setOptionsFromArguments(int argc, char** argv);
void validateOptionCombination();
int getBits() {
return bits
};
};
Objective-C セクションでは、次のように Options を初期化します。
Options *opts=new Options([fileName cStringUsingEncoding:NSUTF8StringEncoding]);
ここで何が起こるかというと、別の C++ メソッドにポインターを渡すと正常に動作しますが、実際に目的の c 側で何かにアクセスしようとすると、たとえば、
opts->bits または opts->getBits()
常に印刷の整数値を返します
Objective-C 側と C++ 側の間でシンボル テーブルが混乱しているように見えますが、これを引き起こすために何ができたのかわかりません。
Mac用にコンパイルすると、コードはObjective-C ++でも機能し、C ++がC ++を呼び出している限り、機能しているように見えるので、メモリが破損しているわけではなく、シンボルテーブルの問題のように見えます。
どんな洞察も大歓迎です。