所以,我一直在努力連接散列一個簡單的應用程序,包括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:
您是否嘗試使用'.mm'擴展名重命名'.cpp'文件? – 2010-09-21 20:11:43
是的,如果我這樣做,那麼automake沒有找到任何輸入文件,但是當我在'./src/Makefile.am'中註釋掉'greetings_CFLAGS = -framework -Xlinker Foundation'這行時,所有的錯誤都變成了' /usr/include/c++/4.2.1/bits/istream.tcc:406:錯誤:C鏈接模板「 – 2010-09-21 20:17:27
您可以將'Makefile'或'Makefile.in'添加到您的要點嗎?我想知道是否缺少'.mm - > $(OBJEXT)'的後綴規則,這就是爲什麼沒有輸入文件的原因。 – 2010-09-22 06:16:41