C语言调用其它动态库函数 c调用动态链接库函数
C语言中,是否可以调用其它文件的函数?
可以调用。
建网站原本是网站策划师、网络程序员、网页设计师等,应用各种网络程序开发技术和网页设计技术配合操作的协同工作。创新互联专业提供成都网站建设、网站制作,网页设计,网站制作(企业站、响应式网站、电商门户网站)等服务,从网站深度策划、搜索引擎友好度优化到用户体验的提升,我们力求做到极致!
一、从一个源文件里调用另一个源文件的函数。在源文件A1.c中调用A2.c 中的函数有两种方法:
1、在A2.c中有完整的函数定义,在A1.c中添加一下要用到的函数原型(声明)就可以了,例如:
在A2.c中:有函数void A2(){...};。
在A1.c中:在文件前头增加一行:void A2();就可以了。
2、把A2.c中完整定义的函数的原型,写到一个A2.h文件中,然后在A1.c的文件头增加#include "A2.h"就可以了。
以上两种方法,在A1.c中都可以正常的调用,就跟在A2.c中调用一样。
其实函数默认是外部的,只要在其他文件中声明就能使用;但是注意如果在前面加上static,就只能在本文件中使用了,不能再被其他的文件调用。
二、编写头文件:
1、一个.h文件要 对应有一个.c文件,这样链接器就可以调用这个文件里的函数。比如a.h 和 a.c。
在.h文件中:
#ifndef __A_H_
#define __A_H_
#includestdio.h
void trans2(double B) ;
double trans1() ;
#endif
2、把相应的函数定义写在.c文件中。这里要强调一点:要加上#include ".h",这个一般作为一种工程规范。因为如果.c文件中的函数也需要调用同个.c中的其它函数,那么这个.
c往往会include对应的.h,这样就不需要为声明和调用顺序而发愁了。比如头文件里进行了变量的声明,这个时候对应的.c文件是一定要加上这个头文件的。
3、再在其他的main.c文件开头添加#include "a.h"。
扩展资料:
include用法:
#include命令预处理命令的一种,预处理命令可以将别的源代码内容插入到所指定的位置;可以标识出只有在特定条件下才会被编译的某一段程序代码;可以定义类似标识符功能的宏,在编译时,预处理器会用别的文本取代该宏。
插入头文件的内容
#include命令告诉预处理器将指定头文件的内容插入到预处理器命令的相应位置。有两种方式可以指定插入头文件:
1、#include文件名
2、#include"文件名"
如果需要包含标准库头文件或者实现版本所提供的头文件,应该使用第一种格式。如下例所示:
#includemath.h//一些数学函数的原型,以及相关的类型和宏
如果需要包含针对程序所开发的源文件,则应该使用第二种格式。
采用#include命令所插入的文件,通常文件扩展名是.h,文件包括函数原型、宏定义和类型定义。只要使用#include命令,这些定义就可被任何源文件使用。
C语言的动态库在C#中如何声明及调用
1、将DLL文件复制到编译路径目录(系统目录或项目目录等等);
2、导出DLL的功能接口;如:[DllImport("WDT_DIO64.dll")]
internal static extern int InitDIO();
这个DLL在C中的头文件是这样表达的:BOOL InitDIO(void);
BOOL 在C中是int类型的,对应的C#也是int 类型,调用DLL通常都是静态的外部引进的(static extern),internal 是可见属性定义(自己根据需要定义);
3、参考DLL对应的头文件的信息。如果C/C++封装的dll是打算通用的,通常发布头文件,头文件在C中是编译器所需的文件,DLL的关键信息都在头文件展示出来。我们可以通过阅读头文件的包含信息(如结构体、宏定义,函数原型、功能注释等),使用C#方式来导出DLL的函数接口来调用DLL(如上2、)。
4、在需要的地方加上参数调用导出的函数接口。
如何用C语言调用C++做成的动态链接库
C的是不能直接调用C++的
你可以封装一个库
C++的,里面用extern "C"
封装函数,用这个函数调用C++的库
然后 你的C语言程序,调用这个中转库的函数就好。
比如
在你C++库里面,有一个void my_func(int)的话,直接调用my_func是不可能的
在中转库写
extern "C"{
void my_func_c(int a)
{
my_func(a);
}
}
然后在纯C程序中, 调用my_func_c就好了。
c语言如何调用dll动态链接库
这是我以前的回答,是个两数加法的例子,看了就明白了
你的dll不必用h头文件,你用的是显式声明导出函数
vc在显式声明函数时会出现与vb不匹配的问题,他会把函数名改了,你必须用隐式声明,就是def文件声明才可以。
你的cpp里直接写
int __stdcall add(int a, int b)
{
return (a+b);
}
然后再在工程里添加一个文本文件,注意,文件名是 makedll(如果不对就是工程名).def
里面写
LIBRARY makedll
EXPORTS
add @1
然后保存
编译、连接
得到的dll就是vb可以调用的了
vb里呢,不用怎么改
如下
Public Declare Function add Lib "makedll.dll" (ByVal a As Integer,ByVal b As Integer) As Integer
Private Sub Command1_Click()
Dim c As Integer
c = add(1, 2)
MsgBox c
End Sub
这有就应该没问题了
文章名称:C语言调用其它动态库函数 c调用动态链接库函数
分享地址:http://scyanting.com/article/hhsjcg.html