代码写法的问题?

wc_ling 2020-04-22 01:18:40

#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#语言
...全文
148 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_36786068 2020-04-22
  • 打赏
  • 举报
回复
#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编辑器编译时候让他认识,这兄弟到处给系统类型定的别名
wc_ling 2020-04-22
  • 打赏
  • 举报
回复
引用 4 楼 qq_36786068 的回复:
[quote=引用 2 楼 qq_36786068 的回复:] int SearchAndOpenReader(stringBuiler readeruniqueId,ref uint rlen,TagCallback callbackPoint)
就是这个[/quote]
#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#怎么写?
qq_36786068 2020-04-22
  • 打赏
  • 举报
回复
引用 2 楼 qq_36786068 的回复:
int SearchAndOpenReader(stringBuiler readeruniqueId,ref uint rlen,TagCallback callbackPoint)
就是这个
wc_ling 2020-04-22
  • 打赏
  • 举报
回复
FMSHDLL_API INT32S EXPORT_MODE SearchAndOpenReader(char *readeruniqueId, INT32U* rlen,INT32S &handle); 主要是这句话怎么写成C#呢
qq_36786068 2020-04-22
  • 打赏
  • 举报
回复
int SearchAndOpenReader(stringBuiler readeruniqueId,ref uint rlen,TagCallback callbackPoint)
qq_36786068 2020-04-22
  • 打赏
  • 举报
回复
建议下一个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忽略)

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧