小编ste*_*n f的帖子

在OS X Mavericks中从C++链接C语言

转换到OS X Mavericks和XCode 5.0.1之后,我再也不能优雅地将已编译的C文件(从gcc输出)链接到C++项目(从g ++输出).

从我的makefile生成的令人讨厌的命令对是:

gcc `pkg-config --cflags glib-2.0` -g -Wall -O3 `pkg-config --cflags flann`   -c -o vec.o vec.c
g++ `pkg-config --cflags glib-2.0` -g -Wall -O3   -stdlib=libstdc++ -lstdc++  layoutquality.cpp vec.o  `pkg-config --libs glib-2.0`  -L/usr/local/Cellar/flann/1.8.4/lib -lflann -o layoutquality
Run Code Online (Sandbox Code Playgroud)

链接器抱怨的是:

体系结构x86_64的未定义符号:"load_dmat(char const*)",引用自:layoutquality中的_main-I8HOqy.o ld:未找到体系结构x86_64的符号

哪里load_dmat只是文件vec.c中的一个函数.如果我在第一行中替换了gccwith g++,那么所有内容都会编译并链接正常,但是clang说:

clang:警告:在C++模式下将'c'输入视为'c ++'时,不推荐使用此行为

是否有一种无害的,不推荐的编译和链接方式?与链接g++与目标文件一起gcc工作的罚款之前,我升级到OS X小牛和新的命令行工具.任何有关变化和如何前进的见解都会很棒,谢谢.

c c++ gcc clang osx-mavericks

10
推荐指数
3
解决办法
1万
查看次数

标签 统计

c ×1

c++ ×1

clang ×1

gcc ×1

osx-mavericks ×1