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