BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #40266同步于 2010/6/6
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

问一个c和c++编译的问题

steven198662
2010/6/6镜像同步15 回复
想在c文件使用STL,应该怎么办? 目前是写了一个.cpp文件,在里面使用了STL,然后在C文件中调用了CPP定义的函数 但不知道怎么将这两个文件一起编译? 请教各位同学,很着急,多谢了
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
FadeToBlack机器人#1 · 2010/6/6
C++的提供直接操作实例的接口,使用extern "c"修饰一下,然后在c里面包含之后直接调用就行了。如果你一定要把类暴露给c操作的话试试获取类的函数使用PVOID GetClsXXX() 【 在 steven198662 (。。。。。。) 的大作中提到: 】 : 想在c文件使用STL,应该怎么办? : 目前是写了一个.cpp文件,在里面使用了STL,然后在C文件中调用了CPP定义的函数 : 但不知道怎么将这两个文件一起编译? : ...................
steven198662机器人#2 · 2010/6/6
你说的是这个意思吗? gcc a.c 会报错 g++ a.c 才可以通过 a.c #include<stdio.h> #include "b.cpp" int main() { cal(); } b.cpp #include<iostream> #include<map> using namespace std; extern "C" void cal() { map<int,int> P; P[3]=4; cout<<P[3]<<endl; } 【 在 FadeToBlack 的大作中提到: 】 : C++的提供直接操作实例的接口,使用extern "c"修饰一下,然后在c里面包含之后直接调用就行了。如果你一定要把类暴露给c操作的话试试获取类的函数使用PVOID GetClsXXX()
FadeToBlack机器人#3 · 2010/6/6
你拿gcc编译cpp不报错有可能么 要么你就把接口写成c形式,然后用c调用,别和cpp扯关系,不过这要用g++编译 要么你就写成动态连接库,然后暴露c形式的接口 【 在 steven198662 (。。。。。。) 的大作中提到: 】 : 你说的是这个意思吗? : gcc a.c 会报错 : g++ a.c 才可以通过 : ...................
steven198662机器人#4 · 2010/6/6
要么你就写成动态连接库,然后暴露c形式的接口 暴露c形式的接口 是什么意思? 能不能把具体步骤写一下?多谢了 【 在 FadeToBlack 的大作中提到: 】 : 你拿gcc编译cpp不报错有可能么 : 要么你就把接口写成c形式,然后用c调用,别和cpp扯关系,不过这要用g++编译 : 要么你就写成动态连接库,然后暴露c形式的接口
FadeToBlack机器人#5 · 2010/6/6
extern "c" 【 在 steven198662 (。。。。。。) 的大作中提到: 】 : 要么你就写成动态连接库,然后暴露c形式的接口 : 暴露c形式的接口 是什么意思? : 能不能把具体步骤写一下?多谢了 : ...................
steven198662机器人#6 · 2010/6/6
搞不定,真是崩溃了,哎 【 在 FadeToBlack 的大作中提到: 】 : extern "c"
FadeToBlack机器人#7 · 2010/6/6
你要先搞明白c和c++在编译时的区别在哪里 c不支持class,所以include cpp必死 c不支持reload,所以c++的name mangle在c里面会出现找不到函数,因此需要extern "C"修饰一下 搞明白这两点,剩下的就简单了 【 在 steven198662 (。。。。。。) 的大作中提到: 】 : 搞不定,真是崩溃了,哎
a206206机器人#8 · 2010/6/6
【 在 FadeToBlack 的大作中提到: 】 : 你要先搞明白c和c++在编译时的区别在哪里 : c不支持class,所以include cpp必死 : c不支持reload,所以c++的name mangle在c里面会出现找不到函数,因此需要extern "C"修饰一下 : ................... 貌似不能把c++的库用c链接搞。class可以弄进去,但是不能用。 ps:今天的萝卜教主很负责啊,这么尽心
FadeToBlack机器人#9 · 2010/6/6
说的是通过extern "C"暴露个C的接口,至于接口里面是C还是C++就不用管了。 另外,我这是拜萝卜教,不是萝卜教 回答问题是看人和问题的,要是直接要答案才懒得回答呢。(谁知道答案是什么啊) 【 在 a206206 (每天都被人超级鄙视的寂寞帝和悲剧帝) 的大作中提到: 】 : 貌似不能把c++的库用c链接搞。class可以弄进去,但是不能用。 : ps:今天的萝卜教主很负责啊,这么尽心