FBM201d
FBM201d
C和C++之間庫的互相調用
昨晚有個朋友問我關于在C中調用C++庫的問題,今天午飯后,由于脖子痛的厲害而沒有加入到我們組的“每天一戰(zhàn)”的行列中去,所以正好將C和C++之間的庫調用關系做個總結。
1.extern “C”的理解:
很多人認為“C”表示的C語言,實際并非如此,“C”表示的是一種鏈接約定,只是因C和C++語言之間的密切關系而在它們之間更多的應用而已。實際上Fortran和匯編語言也常常使用,因為它們也正好符合C實現(xiàn)的約定。
extern “C”指令描述的是一種鏈接約定,它并不影響調用函數(shù)的定義,即時做了該聲明,對函數(shù)類型的檢查和參數(shù)轉換仍要遵循C++的標準,而不是C。
2.extern “C”的作用:
不同的語言鏈接性是不同的,那么也決定了它們編譯后的鏈接符號的不同,比如一個函數(shù)void fun(double d),C語言會把它編譯成類似_fun這樣的符號,C鏈接器只要找到該函數(shù)符號就可以鏈接成功,它假設參數(shù)類型信息是正確的。而C++會把這個函數(shù)編譯成類似_fun_double或_xxx_funDxxx這樣的符號,在符號上增加了類型信息,這也是C++可以實現(xiàn)重載的原因。
那么,對于用C編譯器編譯成的庫,用C++直接鏈接勢必會出現(xiàn)不能識別符號的問題,是的,需要extern “C”的時刻來了,它就是干這個用的。extern “C” 的作用就是讓編譯器知道要以C語言的方式編譯和連接封裝函數(shù)。
咨詢 或
購買 ?: 或:
REXROTH INDRAMAT RMI-01.00 CARD
REXROTH INDRAMAT RM-I-02 INPUT MODULE 120VAC
REXROTH INDRAMAT RMI.02.00 INPUT MODULE FOR RECO
REXROTH INDRAMAT RM-I-04 CARD
REXROTH INDRAMAT RMK02.2-LWL-SER-FW COMMUNICATIONS MODULE 2MBD BAUDRATE
REXROTH INDRAMAT RMK-12.2-IBS-BKL COMMUNICATION MODULE 500KBD
REXROTH INDRAMAT RM-O-01 OUTPUT MODULE 24VDC
REXROTH INDRAMAT RM-O-02 OUTPUT MODULE 24VDC
REXROTH INDRAMAT RMO-02.00 MODULE
REXROTH INDRAMAT RM-O-04 OUTPUT MODULE FOR RECO RELAY
REXROTH INDRAMAT RMO.04.00 OUTPUT MODULE FOR RECO
REXROTH INDRAMAT S2-DDS2 CONNECTOR KIT/CABLE
REXROTH INDRAMAT S78-DDS-2 CONNECTOR KIT SET FOR DS46-00-FW AND DS46-01-FW
REXROTH INDRAMAT SERVICECHARGE SERVICE
REXROTH INDRAMAT SH2-256-5-1N RESOLVER
REXROTH INDRAMAT SHS PROGRAMMER
REXROTH INDRAMAT SIOB-01 COMMUNICATIONS PROCESSOR
REXROTH INDRAMAT SIOB0100 COMMUNICATIONS PROCESSOR
REXROTH INDRAMAT SOT02-ER-FW STATION OPERATOR CONTROL PANEL
REXROTH INDRAMAT SOTO2-E2R-FW OPERATOR TERMINAL
REXROTH INDRAMAT SSE PROGRAMMER
REXROTH INDRAMAT TAM PROGRAMMING PANEL FOR TRANS01 KEYPAD REMOTE MOUNT
REXROTH INDRAMAT TBM1.1-020-W1 BLEEDER MODULE
REXROTH INDRAMAT TBM1.1-20-W1/115 BLEEDER MODULE
REXROTH INDRAMAT TBM1.1-20-W1/220V SERVO BLEEDER AC
REXROTH INDRAMAT TBM1.20-040-W1/220 SERVO BLEEDER W/220VAC INTERNAL FAN
REXROTH INDRAMAT TBM1.2-040-W1-024 BLEEDER MODULE
REXROTH INDRAMAT TBM1.20-W1-220 BLEEDER MODULE
REXROTH INDRAMAT TBM1.2-40-W1/115 BLEEDER MODULE




























永德县|
宁化县|
新丰县|
吕梁市|
池州市|
大冶市|
中方县|
达州市|
南宁市|
增城市|
建始县|
定南县|
定远县|
西乌珠穆沁旗|
利津县|
泸州市|
徐闻县|
永安市|
藁城市|
红河县|
会理县|
南平市|
公主岭市|
本溪市|
息烽县|
东至县|
高邑县|
梅州市|
巍山|
陆丰市|
左权县|
九寨沟县|
阜阳市|
潼南县|
龙海市|
广西|
孝感市|
拜城县|
朝阳市|
禹城市|
砚山县|