c语言调用cpp函数 c语言调用cpp类方法

C++中一个.cpp调用另一个.cpp文件的方法

1、编译命令: g++ -o dome.so -shared -fPIC dome.cpp,如果成功则会在当前目录下生成一个dome.so的文件。

成都创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、成都网站建设、外贸网站建设、吉隆网络推广、微信小程序、吉隆网络营销、吉隆企业策划、吉隆品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联公司为所有大学生创业者提供吉隆建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com

2、splitpath_s在此作用域中尚未声明这个函数需要的头文件是:stdlib.h,这个函数是 用来获取程序的路径,并对路径进行分解的。

3、在windows上编译时没有任何问题,但是到了centos上就出现了_splitpath_s在此作用域中尚未声明的错误提示,找了很久才发现原来 linux 下是没有_splitpath_s函数的,所以无法识别该函数。

4、‘fopen_s’在此作用域中尚未声明,这里之所以用fopen_s是因为在windows调试的时候提示不安全。

5、‘strlen’在此作用域中尚未声明,前面我声明了一个char[10]常量,然后通过strlen来获取该字符串的长度。

6、在windows中使用strlen只要调用了头文件#include string和空间名using namespace std;即可使用,但是在Linux中需要添加头文件#include string.h才行。

如何在QT中实现C语言中调用C++的函数

C source file的实现。

#include "obj.h"

int main(const int argc, const char **argv){

void *temp_obj = getObj(100);

printString(temp_obj);//实现C语言调用QT/C++UI界面

return (0);

}

写一个C++ source file和c source file都可以共同包含的头文件,如下所示。

#include stdint.h

#ifdef __cplusplus

class Obj{

public:

Obj(int32_t a=50)

~Obj();

std::string toString();

private:

int32_t k;

};

#endif

#ifdef __cplusplus

extern "C" {

#endif

void* getObj(int32_t a);

void destroyObj(void *obj);

void printString(void *obj);

#ifdef __cplusplus

}

#endif

C++ source file的实现,其中C语言函数是供C source file调用的。

#include iostream

#include sstream

#include iomanip

#include stdint.h

#include "obj.h"

Obj::Obj(int32_t a){

k = a 1;

}

Obj::~Obj(){

/* don't really need to do anything here */

/* k = 0 only for example purposes */

k = 0;

}

std::string Obj::toString(){

std::ostringstream os;

os "Obj is currently: " this-k std::endl;

return os.str();

}

void* getObj(int32_t a){

Obj *out = new Obj(a);

return ((void*)out);

}

void destroyObj(void* obj){

delete (((Foo*)obj));

}

void printString(void *obj){

std::string s = ((Obj*)obj)-toString();

std::cout s;

}

Makefile

make file的实现。

CC ?= gcc

CXX ?= g++

CFLAGS = -O0 -g

CXXFLGS = -00 -g

OBJ = main obj

OBJS = $(addsuffix .o,$(OBJ))

all:

make compile

compile:

make $(OBJS)

make objexe

fooexe: $(OBJS)

$(CXX) -o fooexe $(OBJS)

main.o: main.c

$(CC) -c -o main.o main.c

obj.o: obj.cpp

$(CXX) -c -o obj.o obj.cpp

clean:

rm -rf $(OBJS) objexe *.dSYM

Linux 下c语言怎样调用C++的函数,怎么编译,举个例子

完全和windows 下面没有语法区别

在编译之前我们需要在系统里安装G++ GCC,它们就是Linux下的C++/C的编译器。代码如下

代码:

sudo apt-get install build-essential

sudo apt-get install gcc

sudo apt-get install g++

#include iostream

using namespace std;

int main()

{

cout"Hello,World!\n"endl;

return 0;

}

另一个带c++库函数

#includeiostream

#includestack

using namespace std;

int sushu(int n)

{

int i;

for(i=2;in;i++)

{

if(n%i==0)

break;

}

if(n==i  n!=1)

return 1;

else

return 0;

}

int main()

{

int n,i,j;

stackint mystack;

cinn;

while(n1)

{

for (i=2;i=n;i++)

{

if (n%i==0 sushu(i)==1)

{

mystack.push(i);

n=n/i;

break;

}

}

}

while(!mystack.empty())

{

coutmystack.top()" ";

mystack.pop();

}

return 0;

}

名称为 test.cpp

你使用 

g++ test.cpp

./a.out

c语言如何在一个cpp中使用另一个cpp的变量?

第一、要想跨文件使用同一个变量,该变量必须定义成全局变量

第二、在另外的文件引用文件外的全局变量,引用者必须用extern来声明变量。

第三、必须在函数中去操作该变量

如:

1.cpp:

void func() ;

int n ;

int main()

{

n=1;

func() ;

return 0;

}

2.cpp

#include iostream

extern int n;

void func()

{

std::cout "n="n std::endl ;

}


网站名称:c语言调用cpp函数 c语言调用cpp类方法
本文地址:http://azwzsj.com/article/doeoccd.html