導航:首頁 > 源碼編譯 > c和cpp的文件怎麼一起編譯

c和cpp的文件怎麼一起編譯

發布時間:2022-03-30 09:34:32

⑴ 最近剛接觸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文件,之後再主函數中,將頭文件包含進來,進行聯編

閱讀全文

與c和cpp的文件怎麼一起編譯相關的資料

熱點內容
神舞幻想存檔放哪個文件夾 瀏覽:648
怎樣把pdf轉為圖片 瀏覽:333
51單片機指令jz 瀏覽:89
ug後處理演算法更改 瀏覽:368
河南伺服器負載均衡是什麼 瀏覽:681
docker容器執行命令 瀏覽:150
程序員成本管理思路 瀏覽:165
租界租界pdf 瀏覽:624
ipad上pdf 瀏覽:647
程序員沒錢買房完整版 瀏覽:815
貞觀政要pdf 瀏覽:713
php列印錯誤信息 瀏覽:337
zec是什麼壓縮機 瀏覽:286
vivov3如何刷安卓60 瀏覽:180
平板電腦開機解壓 瀏覽:917
平板教師上網課用什麼app 瀏覽:888
一遵命令 瀏覽:276
比心app鎖一下是什麼意思 瀏覽:276
群暉和聯想的雲伺服器區別在哪裡 瀏覽:475
data文件夾為什麼訪問限制 瀏覽:15