- 论坛徽章:
- 0
|
本帖最后由 ggmove 于 2013-12-16 11:27 编辑
c语言调用dll(c语言写的dll)是最简单的,8楼所说的方式是C++的调用步骤:- HINSTANCE hInstance = LoadLibrary(_T( "libSDK.dll"));
- typedef INT (__cdecl *SystemInit)(INT nVersion, LPSTR lpszEncoding);
- SystemInit fInit = (SystemInit)GetProcAddress(hInstance, "System_Init");
- 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语言写,那么不管其他人是用什么语言做开发,基本都可以使用。而且网上基本都有调用方法。 |
|