#pragma once
typedef signed __int8 INT8S;
typedef unsigned __int8 INT8U;
typedef signed __int16 INT16S;
typedef unsigned __int16 INT16U;
typedef signed __int32 INT32S;
typedef unsigned __int32 INT32U;
typedef signed __int64 INT64S;
typedef unsigned __int64 INT64U;
typedef signed __int32 BOOL32;
typedef unsigned __int32 HANDLE32;
typedef unsigned __int64 HANDLE64;
#define _STDCALL_
#ifdef _STDCALL_
#define EXPORT_MODE __stdcall
#else
#define EXPORT_MODE __cdecl
#endif
#ifdef FMSHDLL_EXPORTS
#define FMSHDLL_API _declspec(dllexport)
#else
#define FMSHDLL_API _declspec(dllimport)
#endif
typedef INT32S (EXPORT_MODE *TagCallbackFunction)( INT32S handle,char *PCstr,INT32U PCstrLength,char * EPCstr,INT32U EPCstrLength,char *RSSIstr,INT32U RSSIstrLength);
FMSHDLL_API INT32S EXPORT_MODE SearchAndOpenReader(char *readeruniqueId, INT32U* rlen,INT32S &handle);
這段代碼是VC6寫的,請問怎么寫成C#語言
uj5u.com熱心網友回復:
建議下一個pinvoke的生成工具(PInvoke Signature Toolkit)我在家隔離,懶得安裝。手動翻譯一下,不保證正確。
INT32S ------有符號int32-------int32
char *readeruniqueId---------------------stringBuiler
INT32U*-------無符號ini32,out引數----------ref uint32
INT32S &handle-----------------這個是回呼指標
int SearchAndOpenReader(stringBuiler readeruniqueId,ref rlen,inptr callbackPoint)//暫時先用inptr代替回呼宣告,我下面在翻譯回呼
delegate int32 TagCallback (inptr handle,string PCstr,uint PCstrLength,string EPCstr,uint EPCstrLength,string RSSIstr,uint RSSIstrLength)
最后總體上是
int SearchAndOpenReader(stringBuiler readeruniqueId,ref rlen,TagCallback callbackPoint)
紅字部分我又點拿不準他要啥,先調調看。(當然如果你壓根用不上委托,可以直接不管,null或者inptr.zero傳過去好,反正對于c++的人來說,寫法跟俺們一樣,指標空,零他要做判定,空的,零的他忽略,俺們寫一樣判定委托是否為null,為null忽略)
uj5u.com熱心網友回復:
int SearchAndOpenReader(stringBuiler readeruniqueId,ref uint rlen,TagCallback callbackPoint)uj5u.com熱心網友回復:
FMSHDLL_API INT32S EXPORT_MODE SearchAndOpenReader(char *readeruniqueId, INT32U* rlen,INT32S &handle);主要是這句話怎么寫成C#呢
uj5u.com熱心網友回復:
就是這個
uj5u.com熱心網友回復:
#define _STDCALL_這段代碼是什么意思,用C#怎么寫?
#ifdef _STDCALL_
#define EXPORT_MODE __stdcall
#else
#define EXPORT_MODE __cdecl
#endif
#ifdef FMSHDLL_EXPORTS
#define FMSHDLL_API _declspec(dllexport)
#else
#define FMSHDLL_API _declspec(dllimport)
#endif
uj5u.com熱心網友回復:
#define _STDCALL_#ifdef _STDCALL_
#define EXPORT_MODE __stdcall
#else
#define EXPORT_MODE __cdecl
#endif
#ifdef FMSHDLL_EXPORTS
#define FMSHDLL_API _declspec(dllexport)
#else
#define FMSHDLL_API _declspec(dllimport)
#endif
這些不用寫,那是宏宣告,跟C#無關,只是定義的一些vc編輯器編譯時候讓他認識,這兄弟到處給系統型別定的別名
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/48060.html
標籤:C#
上一篇:定義一個student類,兩個屬性是Name和age,一個靜態變數school,定義一個無參的構造方法和一個兩個引數的構造方法,在測驗類中分別呼叫這兩個構造方法
下一篇:現在杭州.net作業行情怎么樣
