所以,我一直在努力连接散列一个简单的应用程序,包括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