Я использую Eclipse, GCC 4.8 и собираю проект C ++ на Mac OS 10.7 и 10.8. Большую часть времени проект собирается и работает правильно, за исключением некоторых конкретных функций. Например:
int main( int argc, char ** argv ) {
string a = "test";
string b = "-bla";
string c;
c = a + b;
return 0;
}
Компиляция прошла успешно:
Сборка конфигурации Debug для проекта Working **
make all Сборка файла: ../working.cpp Вызов: GCC C ++ Компилятор g ++
-O0 -g3 -Wall -c -fmessage-length = 0 -std = c ++ 11 -MMD -MP -MF «working.d» -MT «working.d» -o «working.o» «../ working.cpp «Завершено сборка: ../working.cpp Цель сборки: Работает Вызов: MacOS X C ++ Linker
g ++ -o «Работающий» ./working.o Законченное строительство цель: РаботающийСборка завершена **
Тем не менее, я получил эту ошибку во время выполнения:
dyld: lazy symbol binding failed: Symbol not found: __ZNSsaSEOSs
Referenced from: /Volumes/Macintosh HD/Users/zeroliu/Study/CPP/Working/Debug/Working
Expected in: /usr/lib/libstdc++.6.dylib
dyld: Symbol not found: __ZNSsaSEOSs
Referenced from: /Volumes/Macintosh HD/Users/zeroliu/Study/CPP/Working/Debug/Working
Expected in: /usr/lib/libstdc++.6.dylib
Я обнаружил, что ошибка исходит от
string c;
c = a + b;
Интересно, если я внесу следующие изменения:
string c = a+b;
или же
c = a;
Программы работают отлично.
У кого-нибудь есть идеи о том, что здесь происходит? Спасибо
Задача ещё не решена.
Других решений пока нет …