首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi调用VC中的dll怎么声明

2012-03-05 
delphi调用VC中的dll如何声明vc语言下的头文件内容:#ifndefCXK_CTRLH#defineCXK_CTRLH//-----------------

delphi调用VC中的dll如何声明
vc语言下的头文件内容:

#ifndef   CXK_CTRLH
#define   CXK_CTRLH
//---------------------------------------

typedef       struct
{
      char     CPMC         [50]   ;       //     厂牌名称
      char     CX             [50]   ;       //     型号
      char     LX             [50]   ;       //     类型
      char     GB             [50]   ;       //     国别
      char     SCCJ         [50]   ;       //     生产厂家
      char     CXXL         [50]   ;       //     车型系列
      char     CYS           [50]   ;       //     乘员数
      char     ZZL           [50]   ;       //     总质量
      char     ZBZL         [50]   ;       //     整备质量
      char     LTGG         [50]   ;       //     轮胎规格
      char     ZGCS         [50]   ;       //     最高车速
      char     DZ             [50]   ;       //     灯制
      char     DK             [50]   ;       //     灯宽
      char     DG             [50]   ;       //     灯高
      char     QDXS         [50]   ;       //     驱动型式
      char     ZS             [50]   ;       //     轴数
      char     QDZ           [50]   ;       //     驱动轴
      char     ZCZ           [50]   ;       //     驻车轴
      char     FXPZJ       [50]   ;       //     方向盘直径
      char     QSSX         [50]   ;       //     前束上限
      char     QSXX         [50]   ;       //     前束下限
      char     CLWQJSX   [50]   ;       //     车轮外倾角上限
      char     CLWQJXX   [50]   ;       //     车轮外倾角下限
      char     ZXNQJSX   [50]   ;       //     主销内倾角上限
      char     ZXNQJXX   [50]   ;       //     主销内倾角下限
      char     ZXHQJSX   [50]   ;       //     主销后倾角上限
      char     ZXHQJXX   [50]   ;       //     主销后倾角下限


      char     WCZXJSX   [50]   ;       //     外侧转向角上限
      char     WCZXJXX   [50]   ;       //     外侧转向角下限
      char     NCZXJSX   [50]   ;       //     内侧转向角上限
      char     NCZXJXX   [50]   ;       //     内侧转向角下限
      char     SFDP         [50]   ;       //     是否电喷
      char     SFABS       [50]   ;       //     是否ABS
      char     ZDFS         [50]   ;       //     制动方式
      char     SFDLXG     [50]   ;       //     是否独立悬挂
      char     ZCCD         [50]   ;       //     车身长度
      char     ZCKD         [50]   ;       //     车身宽度
      char     ZCGD         [50]   ;       //     车身高度
      char     ZJ             [50]   ;       //     轴距

      //------------------发动机-------------
      char     ZZCS         [50]   ;       //     制造厂商
      char     FDJXH       [50]   ;       //     发动机型号
      char     GS             [50]   ;       //     缸数
      char     RLZL         [50]   ;       //     燃料种类
      char     DHFS         [50]   ;       //     点火方式
      char     EDNJ         [50]   ;       //     额定扭矩
      char     EDNJZS     [50]   ;       //     额定扭矩转速
      char     EDGL         [50]   ;       //     额定功率
      char     EDGLZS     [50]   ;       //     额定功率转速
      char     DHSX         [50]   ;       //     点火顺序
      char     QDDY         [50]   ;       //     启动电压
      char     QDDL         [50]   ;       //     启动电流
      char     QDZS         [50]   ;       //     启动转速
      char     CDDY         [50]   ;       //     充电电压
      char     CDDL         [50]   ;       //     充电电流
      char     QGYL         [50]   ;       //     汽缸压力
      char     DSZS         [50]   ;       //     怠速转速


      char     TQJ           [50]   ;       //     提前角
      char     BHJ           [50]   ;       //     闭合角
      char     CDJ           [50]   ;       //     重叠角
      char     DHGY         [50]   ;       //     点火高压
      char     JYYLSX     [50]   ;       //     机油压力上限
      char     JYYLXX     [50]   ;       //     机油压力下限
      char     EDYH         [50]   ;       //     额定油耗
      char     PL             [50]   ;       //     排量
      char     DSZKD       [50]   ;       //     怠速真空度
}_CarTypesStruct_HN;


  extern   "C "     bool     _stdcall   OpenDataBase               (HWND   hMainWnd);       //打开数据源         返回true   成功       返回false   失败  
  extern   "C "     bool     _stdcall   ClosDataBase               (HWND   hMainWnd);       //关闭数据源         返回true   成功       返回false   失败
  extern   "C "     bool     _stdcall   UpdateCarTypes           (HWND   hMainWnd);       //更新车型数据

//两种联网方式
  //----------------1弹出选择窗体-----------------------------
  extern   "C "     bool     _stdcall   ChoiceCarTypes           (HWND   hMainWnd,_CarTypesStruct_HN   &   CarTypesStruct);     //查询车型数据     返回true   成功       返回false   失败   //c++用
  extern   "C "     bool     _stdcall   ChoiceCarTypes_ByVB(HWND   hMainWnd,char   *   CarTypesStruct);     //查询车型数据     返回true   成功       返回false   失败   //de   /   vb用


//---------------------2字符串操作---------------------------
  extern   "C "     bool     _stdcall   GetCPMC_List           (HWND   hMainWnd,char   *   CPMC_List);                                                           //参数(返回参数“厂牌列表”)返回true   成功       返回false   失败
  extern   "C "     bool     _stdcall   GetCX_List               (HWND   hMainWnd,char   *   CPMC,char   *   CX_List);                                       //参数(   厂牌   ,返回参数“车型列表”)返回true   成功       返回false   失败
  extern   "C "     bool     _stdcall   GetFDJXH_List         (HWND   hMainWnd,char   *   CX,char   *   FDJXH_List);                                     //参数(   车型,返回参数“发动机列表”)返回true   成功       返回false   失败


  extern   "C "     bool     _stdcall   GetCar_InfoStr       (HWND   hMainWnd,char   *   CX,char   *   FDJXH,char   *   CarTypesStruct);   //参数(车型,发动机,返回数据列表)       返回true   成功       返回false   失败
  extern   "C "     bool     _stdcall   GetCar_InfoStruct(HWND   hMainWnd,char   *   CX,char   *   FDJXH,_CarTypesStruct_HN   &   CarTypesStruct);//参数(车型,发动机,返回数据结构)       返回true   成功       返回false   失败
//-----------------------

#endif

请问   :
我现在需要调用三个方法分别是:
OpenDataBase
ChoiceCarTypes_ByVB
ClosDataBase
在delphi下怎么声明和使用
我的声明如下:
unit   calldll;
interface
function   ChoiceCarTypes(hMainWnd:HWND   ,@CarTypesStruct:_CarTypesStruct_HN):Boolean;   stdcall;
function   OpenDataBase(hMainWnd:HWND):Boolean;   stdcall;
function   ClosDataBase(hMainWnd:HWND):Boolean;   stdcall;

implementation
function   ChoiceCarTypes;external   'CXK.dll '   name   'ChoiceCarTypes ';
function   OpenDataBase;external   'CXK.dll '   name   'OpenDataBase ';
function   ClosDataBase;external   'CXK.dll '   name   'ClosDataBase ';
end.
我这样声明对不对.

谢谢!!!!!!


[解决办法]
unit calldll;

interface

uses Windows; //因为用到了HWND类型, 所以需要引用Windows单元

type //类型申明
_CarTypesStruct_HN = record
CPMC : array[0..49] of Char; //厂牌名称
CX : array[0..49] of Char; //型号
//......
end;

function ChoiceCarTypes(hMainWnd:HWND; var CarTypesStruct:_CarTypesStruct_HN):Boolean; stdcall;
external 'CXK.dll ' name 'ChoiceCarTypes ';
function OpenDataBase(hMainWnd:HWND):Boolean; stdcall; external 'CXK.dll ' name 'OpenDataBase ';
function ClosDataBase(hMainWnd:HWND):Boolean; stdcall; external 'CXK.dll ' name 'ClosDataBase ';

implementation
//DLL函数申明可以在Interface部分完成, 没必须写成Interface和Implementation两部分
end.

热点排行