c# 2010 and DLL
本文关键字:DLL and 2010 | 更新日期: 2023-09-27 18:34:51
我需要在 C# 2010 上使用最旧的.dll驱动程序(.dll不是 .NET(。我有一个关于.dll的快速文档,向我展示了初始化驱动程序、关闭驱动程序、读取数据广告等。
对于 istance INITDRIVER:
UNITE_RC rc = InitDriver(USHORT usNB_drv);
Parameters: usNB_drv: number or istance of driver that will be open
Return information:
OK: well done
EBORNES: usNB_drv must be 1 or 2
EDRVAOPEN: driver yet open
所以我尝试在 Web 上找到一个解决方案,我认为我必须使用 DLLImport,因为我无法使用引用或 COM+ 在我的项目中链接 dll。有人可以帮我提供一些样品吗?非常感谢
好吧,我们不知道UNITE_RC
扩展到什么。我将假设它扩展到int
.在这种情况下,您的 p/调用声明将是:
[DllImport(@"MyLib.dll", CallingConvention = CallingConvention.Cdecl)]
static extern int InitDriver(ushort usNB_drv);
我还假设调用约定是cdecl
,因为您提供的代码没有另行说明。当然,可以想象实际的代码,也许在UNITE_RC
宏中,也许在其他地方,指定了不同的调用约定。要深入了解这一点,您确实需要使用随库提供的C++头文件。
解决此问题的另一种方法是在库周围使用混合模式 C++/CLI 包装器。这将允许您通过包含头文件和向链接器提供导入库 (.lib( 的标准C++机制调用和链接到本机代码。然后,可以导出托管类(C++/CLI 中的 ref 类(供 C# 代码使用。如果本机代码具有多个需要调用的函数,则这是向 C# 代码公开它最不容易出错的方法。