免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: sylpjx
打印 上一主题 下一主题

[C] c语言怎么调用DLL呢, [复制链接]

论坛徽章:
0
11 [报告]
发表于 2013-12-16 11:25 |只看该作者
本帖最后由 ggmove 于 2013-12-16 11:27 编辑

c语言调用dll(c语言写的dll)是最简单的,8楼所说的方式是C++的调用步骤:
  1. HINSTANCE hInstance = LoadLibrary(_T( "libSDK.dll"));
  2. typedef INT (__cdecl *SystemInit)(INT nVersion, LPSTR lpszEncoding);
  3. SystemInit fInit  = (SystemInit)GetProcAddress(hInstance, "System_Init");
  4. int nResult = fInit(1, "");
复制代码
库名:libSDK.dll,库内公开函数:System_Init(int version, char *encoding);

c语言在调用dll时就像在一个文件里使用另一个文件的函数一样,只需要include库的头文件,就可以直接使用库内的接口函数。当然在编译时需要:-llibSDK一下,库文件名:libSDK.dll

当然上面的方式是c语言写的dll,而你这里所说的:DELPHI,亦或是C#,Java等语言写的dll用c一般是调用不了的,这几种语言比c更高级,用DELPHI、C#等去调用c语言写的dll是可以实现的,因为c语言比较纯粹,而且这几种语言都为调用c的dll预留了接口,这方面你有什么问题我可以帮你,最近刚做了这种项目。

做过c语言的都知道,在很多操作上,c里面都要自己动手实现(类似字符串操作、类型转换等),而C#、Java包括C++都有封装好的类供你调用。当使用DELPHI调用c语言dll时,如果遇到参数类型:char  test[7], DELPHI里面应该使用类型:test: array[0..6] of AnsiChar; 而如果DELPHI的dll里面参数类型是:CString,那c语言如何处理?又或者DELPHI里面有界面相关的东西,c语言的环境是支持不了的,而且c语言没有提供这类调用的接口、方法。

一般的dll文件最好是c语言编写,当然如果你的dll只是自己使用,那你如果用DELPHI开发,可以用DELPHI写dll,用C#开发就用C#写dll,如果你写的dll不仅仅是自己使用,那么最好是用c语言写,那么不管其他人是用什么语言做开发,基本都可以使用。而且网上基本都有调用方法。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP