在C#上的DllImport [英] DllImport on c#
问题描述
如何在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屋!