⑴ 最近刚接触c++,我已经有了一些头文件和对应的cpp文件,请问怎么在项目里编译并运行起来
如果用的是CFree或VC6
F5一键编译
如果你用的是VS或DevCpp
创建一个项目
在 解决方案管理器 中 项目 右键添加源代码、头文件
调试-启动(VS默认按键不是F5)
⑵ 如何编译多个C/CPP文件
跟头文件放在同一个目录下,引用函数直接调用头文件中的函数接口,需要编译
⑶ *c和*cpp文件编译问题
如何你将改的代码依然放在扩展名为cpp的文件里,你在VC中选择将这个文件用c来编译。
重载的函数起不同的名字,C++中的inline函数一般是在头文件中定义的,在转变为c应将它的定义放在源文件中,取消inline申明。
引用数据类型在c中是不存在的需要改为指针型。
在C语言中变量申明一般要放在函数的前面,而c++中可以放在使用的地方,需要改变后这些变量申明位置。
for(int i = 0; i < n; ++i)这是c++的语句,而在c中是不允许的,需要
int i
...
for(i = 0; i < n; ++i)
⑷ VS2010 C/C++编译,在一个solution/project中怎么把几个.cpp、.h文件链接起来编译效果像make一样。
建一个execute.h,文件,放置execute.cpp中用到的函数的声明,在有main.cpp文件中用#include"execute.h",不用#include“execute.cpp",这样试一下,vs2010貌似放置主函数的文件中用#include”文件名.cpp"就会出那样的错误;
或者用把execute.cpp后缀改一下execute.c,主函数中用#include“execute.c"试一下,这样应该可以,原理不明
⑸ Keil uvision5. 中c++和c源文件是不是不能混合编译 比如 main.cpp和led.c一起编
可以的哦
Keil系列教程:
http://blog.csdn.net/column/details/13472.html
⑹ 请教一个gcc编译.c,cpp文件共存的工程问题
目前暂不支持开发工具编译C、c++代码生成so文件,应该后续版本会有的。.so 为共享库,是shared object,用于动态连接的,和dll差不多,可以这样调用so文件:得到/usr/java/jdk1.5.0_13/jre/lib/i386,将SO文件放在该目录下运行java程序,输出了由C...
⑺ 如何编译C文件
编译C文件用GCC。
编译C文件常用方法:
单个文件:
g++ file.cpp
这是最简单形式,缺省输出为a.out,可以用-o命令指定输出文件,比如g++ file.cpp f.out
多个文件:
g++ -c 1.cpp -o 1.o
g++ -c 2.cpp -o 2.o
g++ 1.o 2.o -o prog.out
链接成可执行文件:
一般用g++ -o file file.cpp
多个文件是g++ -o file file1.cpp file2.cpp ...
编译C++不是用GCC而是G++.
如果用GCC能编译但不能链接.
多个文件:
1.编译多个文件,但不连接:
g++ file1.cpp file2.cpp
会生成两个文件:file1.o, file2.o
2.连接:
g++ -o outFileName file1.o file2.o
会生成一个可执行文件:outFileName。
如果想,一步就完成编译和连接,那么:
g++ -o outFileName file1.cpp file2.cpp
-o选项控制是否连接。
⑻ c和.cpp的文件怎么一起编译
1、编译test.cpp文件,不要单独编译circle.cpp文件2、将circle.cpp文件内容全部拷贝到test.cpp文件,去除相同的部分。
⑼ .cpp 和 .c 文件混合makefile 如何编写
其实你直接网络就行,很多例子。
下面是别人的。
#
# c.cpp混合编译的makefile模板
#
#
BIN = foyerserver.exe
CC = gcc
CPP = g++
#这里只加入库头文件路径及库路径
INCS =
LIBS =
SUBDIRS =
#生成依赖信息时的搜索目录,比如到下列目录中搜索一个依赖文件(比如.h文件)
DEFINC = -I"./../../base/" -I"./../common" -I"./../../lib/lxnet/" -I"./../../lib/tinyxml/src/"
#给INCS加上依赖搜索路径,分开写可能会产生不一致情况,而且繁琐
#
#
#maintest.c tree/rbtree.c 多了子目录,那就直接添加 目录/*.c即可 所有的源文件-- .c文件列表
CSRCS = $(wildcard ./*.c ./../../base/log.c ./../../base/corsslib.c ./../../base/idmgr.c ./../../base/pool.c)
CPPSRCS = $(wildcard ./*.cpp ./../common/backcommand.cpp ./../common/connector.cpp)
#
#
#所有的.o文件列表
COBJS := $(CSRCS:.c=.o)
CPPOBJS := $(CPPSRCS:.cpp=.o)
#
#生成依赖信息 -MM是只生成自己的头文件信息,-M 包含了标准库头文件信息。
#-MT 或 -MQ都可以改变生成的依赖 xxx.o:src/xxx.h 为 src/xxx.o:src/xxx.h 当然。前面的 src/xxx.o需自己指定
#格式为 -MM 输入.c或.cpp 查找依赖路径 -MT或-MQ 生成规则,比如src/xxx.o
MAKEDEPEND = gcc -MM -MT
CFLAGS =
#CFLAGS += -Wall -ansi -DWIN32 -DNDEBUG -O2
CPPFLAGS =
#CPPFLAGS += -Wall -DWIN32 -DNDEBUG -O2
#-g 生成调试信息
#-pedantic参数与-ansi一起使用 会自动拒绝编译非ANSI程序
#-fomit-frame-pointer 去除函数框架
#-Wmissing-prototypes -Wstrict-prototypes 检查函数原型
#针对每个.c文件的.d依赖文件列表
CDEF = $(CSRCS:.c=.d)
CPPDEF = $(CPPSRCS:.cpp=.d)
PLATS = win32-debug win32-release linux-debug linux-release
none:
@echo "Please choose a platform:"
@echo " $(PLATS)"
win32-debug:
$(MAKE) all INCS=-I"c:/mingw/include" LIBS="-L"c:/mingw/lib" -L"./../../lib/lxnet" -llxnet -lws2_32 -L"./../../lib/tinyxml" -ltinyxml" CFLAGS="-Wall -DWIN32 -DDEBUG -g" CPPFLAGS="-Wall -DWIN32 -DDEBUG -g"
win32-release:
$(MAKE) all INCS=-I"c:/mingw/include" LIBS="-L"c:/mingw/lib" -L"./../../lib/lxnet" -llxnet -lws2_32 -L"./../../lib/tinyxml" -ltinyxml" CFLAGS="-Wall -DWIN32 -DNDEBUG -O2" CPPFLAGS="-Wall -DWIN32 -DNDEBUG -O2"
linux-debug:
$(MAKE) all INCS=-I"/usr/include" LIBS="-L"/usr/lib" -L"./../../lib/lxnet" -llxnet -lpthread -L"./../../lib/tinyxml" -ltinyxml" CFLAGS="-Wall -DDEBUG -g" CPPFLAGS="-Wall -DDEBUG -g"
linux-release:
$(MAKE) all INCS=-I"/usr/include" LIBS="-L"/usr/lib" -L"./../../lib/lxnet" -llxnet -lpthread -L"./../../lib/tinyxml" -ltinyxml" CFLAGS="-Wall -DNDEBUG -O2" CPPFLAGS="-Wall -DNDEBUG -O2"
all:$(BIN)
#生成.o的对自己目录中.h .c的依赖信息.d文件到.c所在的路径中
#$(DEF)文件是.d文件名列表(含目录),比如tree.d 匹配成功那么%就是tree,然后在尝试%.c,如果成功。则执行规则
# $(<:.c=.o)是获取此.c文件的名字(含路径),然后变为.o比如 src/xxx.o。 以形成如下
# src/xxx.o : src/xxx.c ***.h ***.h 最前面!!注意。
# 此做法是每个.d都和生成他的.c在一个目录里,所以需要这样做。
# $(<:.c=.o)之类的 。此时的<相当于变量$< 。切记
# : : : 含义同下
$(CDEF) : %.d : %.c
$(MAKEDEPEND) $(<:.c=.o) $< $(DEFINC) > $@
$(CPPDEF) : %.d : %.cpp
$(MAKEDEPEND) $(<:.cpp=.o) $< $(DEFINC) > $@
#先删除依赖信息
#重新生成依赖信息
#这里出现了一个 $(MAKE) 没有定义的变量。这个变量是由 Make 自己定义的,它的值即为自己的位置,方便 Make 递归调用自己。
depend:
-rm $(CDEF)
-rm $(CPPDEF)
$(MAKE) $(CDEF)
$(MAKE) $(CPPDEF)
#$(OBJS):%.o :%.c 先用$(OBJS)中的一项,比如foo.o: %.o : %.c 含义为:试着用%.o匹配foo.o。如果成功%就等于foo。如果不成功,
# Make就会警告,然后。给foo.o添加依赖文件foo.c(用foo替换了%.c里的%)
# 也可以不要下面的这个生成规则,因为下面的 include $(DEF) 就隐含了。此处为了明了,易懂。故留着
$(COBJS) : %.o: %.c
$(CC) -c $< -o $@ $(INCS) $(DEFINC) $(CFLAGS)
$(CPPOBJS) : %.o: %.cpp
$(CPP) -c $< -o $@ $(INCS) $(DEFINC) $(CPPFLAGS)
# $@--目标文件,$^--所有的依赖文件,$<--第一个依赖文件。每次$< $@ 代表的值就是列表中的
#
$(BIN) : $(COBJS) $(CPPOBJS)
$(CPP) -o $(BIN) $(COBJS) $(CPPOBJS) $(LIBS)
-rm $(COBJS) $(CPPOBJS)
# 链接为最终目标
#引入了.o文件对.c和.h的依赖情况。以后.h被修改也会重新生成,可看看.d文件内容即知道为何
#引入了依赖就相当于引入了一系列的规则,因为依赖内容例如: 目录/xxx.o:目录/xxx.c 目录/xxx.h 也相当于隐含的引入了生成规则
#故上面不能在出现如: $(OBJS) : $(DEF)之类。切记
#include $(CDEF) $(CPPDEF)
.PHONY:clean cleanall
#清除所有目标文件以及生成的最终目标文件
clean:
-rm $(BIN) $(COBJS) $(CPPOBJS)
#rm *.d
cleanall:
-rm $(BIN) $(COBJS) $(CPPOBJS)
⑽ 多个cpp文件如何一起编译
将函数的声明放到头文件,函数的定义放在cpp文件,之后再主函数中,将头文件包含进来,进行联编