如何在C语言中调用C++做的动态链接库

如何在C语言中调用C++做的动态链接库,第1张

链接库头文件:

head.h

class A

{

public:

A()

virtual ~A()

int gt()

int pt()

private:

int s

}

firstso.cpp

#include <iostream>

#include "head.h"

A::A(){}

A::~A(){}

int A::gt()

{

s=10

}

int A::pt()

{

std::cout<<s<<std::endl

}

编译命令如下:

g++ -shared -o libmy.so firstso.cpp

这时候生成libmy.so文件,将其拷贝到系统库里面:/usr/lib/

进行二次封装:

secso.cpp

#include <iostream>

#include "head.h"

extern "C"

{

int f()

int f()

{

A a

a.gt()

a.pt()

return 0

}

}

编译命令:

gcc -shared -o sec.so secso.cpp -L. -lmy

这时候生成第二个.so文件,此时库从一个类变成了一个c的接口.

拷贝到/usr/lib

下面开始调用:

test.c

#include "stdio.h"

#include "dlfcn.h"

#define SOFILE "sec.so"

int (*f)()

int main()

{

void *dp

dp=dlopen(SOFILE,RTLD_LAZY)

f=dlsym(dp,"f")

f()

return 0

}

编译命令如下:

gcc -rdynamic -s -o myapp test.c

运行Z$./myapp

10

$

开发一个c语言程序要经过哪四个步骤

开发一个C语言程序需要经过的四个步骤:编辑、编译、连接、运行。

C语言程序可以使用在任意架构的处理器上,只要那种架构的处理器具有对应的C语言编译器和库,然后将C源代码编译、连接成目标二进制文件之后即可运行。

1、预处理:输入源程序并保存(.C文件)。

2、编译:将源程序翻译为目标文件(.OBJ文件)。

3、链接:将目标文件生成可执行文件(.EXE文件)。

4、运行:执行.EXE文件,得到运行结果。

扩展资料:

C语言代码变为程序的几个阶段:

1、首先是源代码文件test.c和相关的头文件,如stdio.h等被预处理器cpp预处理成一个.i文件。经过预编译后的.i文件不包含任何宏定义,因为所有的宏已经被展开,并且包含的文件也已经被插入到.i文件中。

2、编译过程就是把预处理完的文件进行一系列的词法分析、语法分析、语义分析以及优化后产生相应的汇编代码文件,这个过程往往是我们所说的整个程序的构建的核心部分,也是最复杂的部分之一。

3、汇编器不直接输出可执行文件而是输出一个目标文件,汇编器可以调用ld产生一个能够运行的可执行程序。即需要将一大堆文件链接起来才可以得到“a.out”,即最终的可执行文件。

4、在链接过程中,对其他定义在目标文件中的函数调用的指令需要被重新调整,对实用其他定义在其他目标文件的变量来说,也存在同样问题。

参考资料来源:百度百科-c语言

c语言中的编辑,编译,连接,运行分别是什么意思

编辑就是对代码的编写,按照c语言规则,编写完成一定功能的代码。

编译就是对代码进行编译,让代码从高级语言编译成可以让电脑识别运算的机器码。

连接就是对代码各个函数等进行,连接

运行就是运行所编辑代码组成的程序。

编辑,编译和运行C程序需要什么条件?

c程序的编辑,编译,链接和运行

编辑

对于C语言来说,任何文本编辑器都是可以的;windows自带的notepad,linux常用VIM都可以

编译,链接

虽然这是两个步骤,但通常是同一套tool,例如开源的gcc系列,微软的visual C++都有自己的编译链接工具。

运行

一旦编译链接完成通常就可以在目标机器上运行了;如果使用了动态库,还需要运行环境里有对应的库文件才行。

c语言编辑编译链接运行,c语言如何编译运行

C语言编辑编译连接的作用是什么

C语言编辑的作用是检查语法,制作C语言的源文件和头文件,生成汇编代码。

C语言编辑的作用是将汇编代码转换机器码。在这一步中,会对文件内部的语法语义做处理,如果编译出错,无法进行后续动作。

C语言链接的作用是将机器码链接到一起生成可执行程序。这一步会对文件之间的关联做检查,如果出错,将不会生成可执行程序,也就无法执行。

扩展资料:

C语言链接时,将源文件中用到的库函数与汇编生成的目标文件.o合并生成可执行文件。该可执行文件会变大很多,一般是调用自己电脑上的静态库。

静态库和应用程序编译在一起,在任何情况下都能运行,而动态库是动态链接,文件生效时才会调用。很多代码编译通过,链接失败就极有可能在静态库和动态库这出现了纰漏,要视情况解决。缺少相关所需文件,就会链接报错。这个时候就要检查下本地的链接库是不是缺损。

C语言文件的编译与执行的四个阶段并分别描述

开发C程序有四个步骤:编辑、编译、连接和运行。

任何一个体系结构处理器上都可以使用C语言程序,只要该体系结构处理器有相应的C语言编译器和库,那么C源代码就可以编译并连接到目标二进制文件上运行。

1、预处理:导入源程序并保存(C文件)。

2、编译:将源程序转换为目标文件(Obj文件)。

3、链接:将目标文件生成为可执行文件(EXE文件)。

4、运行:执行,获取运行结果的EXE文件。

扩展资料:

将C语言代码分为程序的几个阶段:

1、首先,源代码文件测试。以及相关的头文件,比如stdio。H、由预处理器CPP预处理为.I文件。预编译的。文件不包含任何宏定义,因为所有宏都已展开,并且包含的文件已插入。我归档。

2、编译过程是对预处理文件进行词法分析、语法分析、语义分析和优化,生成相应的汇编代码文件。这个过程往往是整个程序的核心部分,也是最复杂的部分之一。

3、汇编程序不直接输出可执行文件,而是输出目标文件。汇编程序可以调用LD来生成可以运行的可执行程序。也就是说,您需要链接大量的文件才能获得“a.out”,即最终的可执行文件。

4、在链接过程中,需要重新调整其他目标文件中定义的函数调用指令,而其他目标文件中定义的变量也存在同样的问题。

参考资料来源:百度百科-c语言

#include<mysql/mysql.h>

#include<stdio.h>

intmain()

{

MYSQL*conn

MYSQL_RES*res

MYSQL_ROWrow

char*server="localhost"//本地连接

char*user="root"//

char*password="525215980"//mysql密码

char*database="student"//数据库名

char*query="select*fromclass"//需要查询的语句

intt,r

conn=mysql_init(NULL)

if(!mysql_real_connect(conn,server,user,password,database,0,NULL,0))

{

printf("Errorconnectingtodatabase:%s\n",mysql_error(conn))

}else{

printf("Connected...\n")

}

t=mysql_query(conn,query)

if(t)

{

printf("Errormakingquery:%s\n",mysql_error(conn))

}else{

printf("Querymade...\n")

res=mysql_use_result(conn)

if(res)

{

while((row=mysql_fetch_row(res))!=NULL)

{

//printf("num=%d\n",mysql_num_fields(res))//列数

for(t=0t<mysql_num_fields(res)t++)

printf("%8s",row[t])

printf("\n")

}

}

mysql_free_result(res)

}

mysql_close(conn)

return0

}

扩展资料

C语言使用注意事项:

1、指针是c语言的灵魂,一定要灵活的使用它:

(1)、指针的声明,创建,赋值,销毁等

(2)、指针的类型转换,传参,回调等

2、递归调用也会经常用到:

(1)、递归遍历树结构

(2)、递归搜索


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/7762195.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存