当前位置: 首页 > 编程语言 > C#

从C#调用C#分享

时间:2023-04-10 10:42:07 C#

从C#调用C#我是电气工程师出身,所以我对C#、DLL等知之甚少。我想为C#使用c函数。我知道有一些关于此的帖子,但我找不到足够简单的帖子。目前,我有C函数调用WindowsAPI以在USB端口上读/写。我是否需要头文件来首先创建.dll?因为我把下面的函数decleration函数放到了header中。我在stackoverflow和internet上看到的示例只使用一个简单的.c文件,我可以去掉头文件吗?__declspec(dllexport)LMUSB_HANDLE__stdcallInitializeDevice(unsignedshortusVID,unsignedshortusPID,LPGUIDlpGUID,BOOL*pbDriverInstalled);__declspec(dllexport)LMUSB_HANDLE__stdcallInitializeDeviceByIndex(无符号短usVID,无符号短usPID,LPGUIDlpGUID,DWORDdwIndex,BOOLbOpenDataEndpoints,BOOL*pbDriverInstalled);__declspec(dllexport)BOOL__stdcallTerminateDevice(LMUSB_HANDLEhHandle);__declspec(dllexport)BOOL__stdcallWriteUSBPacket(LMUSB_HANDLEhHandle,unsignedchar*pcBuffer,unsignedlongulSize,unsignedlong*pulWritten);__declspec(dllexport)DWORD__stdcallReadUSBPacket(LMUSB_HANDLEhHandle,unsignedchar*pcBuffer,unsignedlongulSize,unsignedlong*pulRead,unsignedlongulTimeoutMs,HANDLEhBreak);__declspec(dllexport)BOOL__stdcallEndpoint0Transfer(LMUSB_HANDLEhHandle,UCHARucRequestType,UCHARucRequest,USHORTusValue,USHORTusIndex,USHORTusLength,PUCHARpucBuffer,PUSHORTpusCount);第二点,我需要在cpp文件中写__declspec(dllexport)吗?这是cpp的一个函数:extern"C"__declspec(dllexport)BOOLPASCALEXPORTTerminateDevice(LMUSB_HANDLEhUSB)我不知道“BOOLPASCALEXPORT”是做什么的,当DLL是建造时正确。我如何在C#项目中导入它?我尝试了以下操作但没有成功:[DllImport("lmusbdll.dll")]我看到您可以右键单击项目并添加引用,但VisualStudio弹出一条错误消息:无法引用“DLL路径”被添加。请确保该文件可访问,并且它是有效的程序集或COM组件。[编辑]我尝试了以下解决方案,但是当我尝试在我的c#项目中引用头文件时。我仍然收到无法引用该文件的消息。您不需要头文件,但每个函数都需要__declspec(dllexport)。如果它是C++(即.cpp文件),则需要extern"C"。有一个名为depends.exe的便捷程序可以让您查看DLL并查看它导出的函数以及它是否依赖于任何其他DLL。这可能就是您的DllImport失败的原因。以上就是C#学习教程:从C#调用C#全部内容分享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处: