У меня есть класс с именем опции, написанные на C++, вот информация Заголовок:искореженных таблица символов в Objective-C при связывании статического C++ библиотеки
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 *opts=new Options([fileName cStringUsingEncoding:NSUTF8StringEncoding]);
Теперь то, что происходит в том, что если я передать указатель на другой метод C++ он работает нормально, но если я на самом деле пытаются получить доступ что-нибудь в Objective C стороны, используя, например
opts-> биты или opts-> getBits()
Это всегда возвращает целое значение для печати
Похоже, что таблица символов становится искаженной между объектами-c и C++, но я понятия не имею, что я мог сделать для этого.
Код работает даже с Objective-C++, если я компилирую для Mac, и до тех пор, пока C++ вызывает C++, он работает, поэтому не похоже, что память повреждена, она просто выглядит как проблема с таблицей символов.
Любое понимание было бы высоко оценено.
Это было, я использовал unsigned short. Я просто изменил имя typedef от BOOL до CBOOL на C++, чтобы избежать потенциальной будущей путаницы. Благодарю. – user439407