如何在 C# 中访问 C++ DLL 的函数
以下是 DLL 的原型(prototype):
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# 中,我正在尝试这样做:
[DllImport ("ITLSSPProc.dll")]
private extern static IntPtr SSP_COMMAND ();
[DllImport ("ITLSSPProc.dll")]
private static extern int OpenSSPComPort (SSP_COMMAND smd);
但它给我一个错误。我究竟做错了什么?提前致谢
最佳答案
至少有一个错误是 SSP_COMMAND
不是函数。是一种类型。 [DllImport]
只导入函数。将其视为不透明的 IntPtr
或为其创建适当的 struct
表示。
将其用作不透明的 IntPtr
:
[DllImport ("ITLSSPProc.dll")]
private static extern int OpenSSPComPort (IntPtr smd);
要使用结构,请参阅 Passing Structures来自 MSDN 并在 C# 中定义一个 struct SSP_COMMAND
。 (此链接包含开始所需的一切,包括相关示例)。
快乐编码。
关于c# - C# 上的 DllImport,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6130877/