利用C语言创建和使用DLL文件

来源:互联网 发布:java pop3 编辑:程序博客网 时间:2024/06/05 02:08
 
C语言复用代码有很多的形式,利用动态链接库(DLL)来复用代码也是一种很有效的做法。使用DLL相比利用静态库来复用代码有几点不同:
 
a. 可以不用写 header File,但是在编译过程中需要在编译器里把文件链接起来;
 
b. 更加灵活,可以只改动和编译DLL文件的内容,而不用对程序其他部分进行修改;
 

c. 利用DLL文件可以方便地与其他语言进行链接(比如Python)。


目前看来,创建 DLL 文件和创建普通c语言文件没有什么不同。创建 C++ 的 DLL 文件要更复杂一些,C 则相对简单。

照着 C 代码的格式写一个文件(注:C++ 似乎会不同,微软就有教程,可以查阅VS的帮助文档)。

 

1)创建DLL及C语言调用程序

以下是一个实例:

创建DLL文件名,为 TestDll.c


//TestDll.c 


#include <</font>stdio.h>


int hello()
{
    printf ("Hello from DLL\n");
}


int SumNumbers(int a, int b)
{
    int c;
    c=a+b;
    return c;
}


写一个主程序来调用DLL文件名为 UseTestDll.c


//UseTestDLL.c 


#include <</font>stdio.h>


int main()
{
    hello();
    hello();
    int a=2,b=3;
    int c;
    c=SumNumbers(a, b);
    printf ("c= %d.\n",c);
}

=====================================

2)编译及运行

a. 编译 DLL 文

先将 c 文件编译成 o 文件,然后再讲 o 文件编译成为 DLL 文件,在 cmd 里面代码如下

gcc -c TestDLL.c

gcc -shared -o TestDll.dll TestDll.o

这样就得到了 TestDll.dll 文件,如果文件多的话可以写个Batch文件来搞定。

b. 编译使用文件

gcc -o UseTestDll UseTestDll.c -L./ -lTestDll

这样就得到了 UseTestDll.exe 文件。UseTestDll.exe 和 TestDll.dll 形成了程序的两个部分,缺一不可。


==================================================

3)在Python中使用已有的Dll文件

DLL文件一样可以在Python中使用。我们可以利用python自带的ctypes模块。

下面是一个示例文件,文件名为UseCDll.py

from ctypes import *

# Simple Test on c_int object
i=c_int(5)
print i
print i.value
i.value=10
print i.value


# Import Dll
TestDll=CDLL('TestDll.dll')


# Test Print Function
TestDll.hello()


# Test variable dilivery
a=c_int(4)
b=c_int(6)
c=TestDll.SumNumbers(a,b)
print c


函数说明:
c_int() 在python下创建c的int类型对象,因为python的数据类型和c的数据类型需要转换
CDLL() 读入DLL文件,并将其转化为一个对象,利用 对象.函数 的形式调用DLL里面的函数
运行一下:


利用C语言创建和使用DLL文件

成功实现了在Python下使用DLL文件,这种方法可以减少代码重复开发,同时由于C的速度比Python大很多,还可以用这个方法对Python进行加速。










0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 苹果6app被锁了怎么办 捡的苹果id锁了怎么办 苹果手机id密码锁了怎么办 美版5s刷机后激活怎么办 vivo手机图案解锁忘记了怎么办 苹果5sid锁死了怎么办 苹果id账号被锁怎么办 苹果6s忘了ld怎么办 小米忘记图形解锁怎么办呢 索尼手机忘记解锁图案怎么办 oppoa37忘记锁屏密码怎么办 oppoa37锁屏密码忘了怎么办 oppor9图案密码忘了怎么办 oppor忘记锁屏图案怎么办 oppor手机忘记解锁图案怎么办 oppor手机忘记图案了怎么办 oppo手机屏幕锁忘了怎么办 三星手机屏幕锁忘了怎么办 手机主菜单坏了怎么办 索尼手机密码忘了怎么办 索尼笔记本密码忘了怎么办 索尼手机解锁密码忘了怎么办 索尼记录仪密码忘了怎么办 索尼z3手机忘记开机密码怎么办 索尼忘记锁屏密码怎么办 索尼手机忘记锁屏密码怎么办 忘了手机解锁图案怎么办 索尼手机忘记开机密码怎么办 索尼笔记本开机密码忘了怎么办 手机的开机密码忘了怎么办 联想手机开机密码忘了怎么办 红米note3忘记开机密码怎么办 小米2忘了密码怎么办 小米笔记本电脑忘记开机密码怎么办 小米笔记本忘记开机密码怎么办 小米手机儿童模式忘记密码怎么办 小米应用锁密码忘了怎么办 小米air密码忘了怎么办 小米4密码忘了怎么办 小米手机开机密码忘了怎么办? 小米笔记本电脑开机密码忘了怎么办