在C#上的DllImport [英] DllImport on c#

查看:126
本文介绍了在C#上的DllImport的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在C#中访问C ++ DLL的功能

How do I access the functions of a C++ DLL in C#

以下是DLL的原型:

NOMANGLE int CCONV SSPSendCommand (SSP_COMMAND * cmd, SSP_COMMAND_INFO * sspInfo);
NOMANGLE int CCONV OpenSSPComPort (SSP_COMMAND * cmd);
NOMANGLE int CCONV OpenSSPComPort2 (SSP_COMMAND * cmd);
NOMANGLE int CCONV OpenSSPComPortUSB (SSP_COMMAND * cmd);
NOMANGLE int CCONV CloseSSPComPort (void);
NOMANGLE int CCONV CloseSSPComPort2 (void);
NOMANGLE int CCONV CloseSSPComPortUSB (void);
NOMANGLE int CCONV DownloadFileToTarget (char * szFilename, int cPort, unsigned char sspAddress);
NOMANGLE long CCONV GetRamDownloadStatus (RAM_UPDATE_STATUS * rmData);
NOMANGLE int CCONV SetPortCloseOption (unsigned int md);
NOMANGLE int CCONV OpenCCTComPort (int PortNumber);
NOMANGLE int CCONV CloseCCTComPort (void);
NOMANGLE int CCONV CCTSendPacket (unsigned char * pkt, unsigned char * length);

在C#中,我正在尝试以下操作:

In C# I am attempting this:

[DllImport ("ITLSSPProc.dll")]
private extern static IntPtr SSP_COMMAND ();

[DllImport ("ITLSSPProc.dll")]
private static extern int OpenSSPComPort (SSP_COMMAND smd);

但这给我一个错误。我究竟做错了什么?预先感谢

But it is giving me an error. What am I doing wrong? Thanks in advance

推荐答案

至少一个错误是 SSP_COMMAND 不是一个功能。这是一种类型。 [DllImport] 仅导入函数。要么将其视为不透明的 IntPtr ,要么为其创建适当的 struct 表示形式。

At least one error is SSP_COMMAND isn't a function. It's a type. [DllImport] only imports functions. Either treat it as an opaque IntPtr or create an appropriate struct representation of it.

将其用作不透明的 IntPtr

[DllImport ("ITLSSPProc.dll")]
private static extern int OpenSSPComPort (IntPtr smd);

有关使用结构的信息,请参见传递结构,并在C#中定义结构SSP_COMMAND 。 (此链接包含入门所需的一切,包括相关示例)。

For using a structure, see Passing Structures from MSDN and define a struct SSP_COMMAND in C#. (This link contains everything required to get started, including relevant samples).

快乐编码。

这篇关于在C#上的DllImport的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆