Итак, я некоторое время работал над подключением хеширования тривиального приложения, содержащего C++ и Objective-C, чтобы доказать некоторые концепции и попробовать что-то узнать.Смешивание C++ и Objective-C (проблема с предполагаемым Automake)
Вот где я в настоящее время, моя команда (запустить, и повторно запустить на изменения) является
$ autoreconf -vis && make clean && ./configure && make && ./src/greetings
Обратите внимание, что я надеюсь, что он будет работать, когда я закончу , вот краткий список файлов:
$ find . | ack '\.(?:cpp|mm|h)$' ./src/darwin/greet.cpp ./src/darwin/greeting.h ./src/darwin/greeting.mm ./src/greet.h ./src/main.cpp ./src/mingw32/greet.cpp ./src/mingw32/greet.h
файлы в полном объеме, все это можно найти в этом Gist at Github.
Вместо того, чтобы проблема конкретно с смешением языков (я даже не сделать это, что далеко) - я появляюсь наткнуться на компилятор не распознает, что это Objective-C
(или ObjecC++
) - по этой причине, мой Autoconf файлы находятся в this gist.
С полным выходом ошибки here, also in a Gist.
Вот пример:
In file included from /usr/include/c++/4.2.1/iosfwd:48, from /usr/include/c++/4.2.1/ios:43, from /usr/include/c++/4.2.1/ostream:45, from /usr/include/c++/4.2.1/iostream:45, from darwin/greet.cpp:10: /usr/include/c++/4.2.1/bits/stringfwd.h:48: error: template with C linkage /usr/include/c++/4.2.1/bits/stringfwd.h:51: error: template with C linkage /usr/include/c++/4.2.1/bits/stringfwd.h:54: error: template with C linkage /usr/include/c++/4.2.1/bits/stringfwd.h:58: error: template specialization with C linkage /usr/include/c++/4.2.1/bits/stringfwd.h:63: error: template specialization with C linkage In file included from /usr/include/c++/4.2.1/iosfwd:49, from /usr/include/c++/4.2.1/ios:43, from /usr/include/c++/4.2.1/ostream:45, from /usr/include/c++/4.2.1/iostream:45, from darwin/greet.cpp:10:
Вы пытались переименовать файлы '.cpp' с расширением' .mm'? –
Да, если я это сделаю, то автомат не найдет входных файлов, однако, когда я прокомментирую строку 'greetings_CFLAGS = -framework -Xlinker Foundation' в'./Src/Makefile.am', тогда ошибки все будут меняться на что-то вроде ' /usr/include/c++/4.2.1/bits/istream.tcc:406: ошибка: шаблон с C linkage' –
Можете ли вы добавить 'Makefile' или' Makefile.in' в свой смысл? Мне интересно, возможно ли, что существует правило суффикса для '.mm -> $ (OBJEXT)', и поэтому нет файлов ввода. –