2010-11-21 8 views
0

次のように翻訳するには?cヘッダーファイルをdelphi 2006に変換する方法

1)

#ifndef __LVR_NET_SDK_H__ 
#define __LVR_NET_SDK_H__ 

#ifdef __LVR_NET_EXPORT__ 
#define LVR_NET_API extern "C" __declspec(dllexport) 
#else 
#define LVR_NET_API extern "C" __declspec(dllimport) 
#endif 

2)

typedef struct { 
DWORD dwAlarmInput; 
     DWORD dwVideoLoss; 
     DWORD dwMotionDetect; 
DWORD dwVideoCover; 
DWORD dwReserve[16]; 
}LVR_NET_ALARM_INFO, *LPLVR_NET_ALARM_INFO; 

3)

LVR_NET_API DWORD __stdcall LvrNetGetSdkVersion(); 

おかげ。

答えて

2

(1): このヘッダーをCライブラリとのインターフェイスに使用する場合のみ、無視しても問題ありません。

(あなたは、Delphiにパッケージ全体を翻訳し、それに基づいてDLLを生成したい場合、あなたは{$ IFDEF LVR_NET_EXPORT}輸出などの

何かを追加する必要があります。{$ ENDIF}へ関数宣言、およびメインのライブラリファイル(「ライブラリ」で始まる1)「輸出」句に関数を追加(再び{$ IFDEF LVR_NET_EXPORT}) )要するに

で:無視

(2):

Type LPLVR_NET_ALARM_INFO = ^LVR_NET_ALARM_INFO 
     LVR_NET_ALARM_INFO = Record 
           dwAlarmInput, 
           dwVideoLoss, 
           dwMotionDetect, 
           dwVideoCover : DWORD; 
           dwReserve  : array[0..15] of DWord; 
          end; 
     TLVR_NET_ALARM_INFO = LVR_NET_ALARM_INFO; // not needed but Delphi style convention 

レコードがパックされる方法がこのように定義されていないため、これは必ずしも十分ではありません。しかし、オリジナルの断片には、梱包に関する情報も欠けています。

3)

function LvrNetGetSdkVersion:DWord; 

又は

function LvrNetGetSdkVersion:DWord; stdcall; external 'dllname.dll' name 'LvrNetGetSdkVersion'; 

DLLからインポートします。しかしテストされていない

interface 

    function LvrNetGetSDKVersion: Cardinal; stdcall; 

implementation 

    function LvrNetGetSDKVersion; external 'nameofthedll.dll'; 

すべて:

type 
    TLVR_NET_ALARM_INFO = record 
    dwAlarmInput : Cardinal; 
    dwMotionDetect : Cardinal; 
    dwVideoCover : Cardinal; 
    dwReserve array [0..15] of Cardinal; 
    end; 

var 
    LVR_NET_ALARM_INFO : TLVR_NET_ALARM_INFO; 

と関数宣言:あなたはあなたがこのような構造を変換することができ、インポート識別子

0

のケースを調整することができ、「名前」の部分に注意してください。 。役に立ったら嬉しいです

DrBobもチェックしてください。ここで、C-HeaderファイルをDelphiに自動的に変換できるツールHeadConvがあります。初めはいいですが、完璧ではありません。

関連する問題