繁体   English   中英

如何将C ++ DLL绑定到我的C#程序-WinCE

[英]How to bind c++ dll to my C# program - winCE

我需要将C ++ dll绑定到我的C#WinCE程序。 (扫描仪dll)

我该怎么办?

提前致谢

您需要使用Interop来调用非托管代码。

using System.Runtime.InteropServices; // DllImport
public class Win32 {
  [DllImport("User32.Dll")]
  public static extern void SetWindowText(int h, String s);
}

这是一篇详细讨论该主题的文章(以及代码的来源)。

http://msdn.microsoft.com/zh-CN/magazine/cc301501.aspx

InterOp的替代方法是使用CLR扩展编写C ++ DLL,用作传统C ++ DLL的包装。 如果封送处理不起作用,这使您有机会处理异常类型,例如自定义结构或类。 (根据MSDN,您可以扩展封送处理支持( http://msdn.microsoft.com/zh-cn/library/bb531313.aspx ),但我没有亲自尝试过此操作,具体取决于您在做什么要做很多工作)。

例如,如果要访问导出类的DLL,则可以有一个包装DLL,该DLL拥有C ++类的实例并定义一个映射到C ++类的.NET类。 例如,这是一个C ++ / CLR DLL的片段,我们用来在.NET中提供一个旧的C ++ DLL:

// This is the constructor for the CLR (managed) object
FileInf::FileInf()
{
    // Create the C++ (unmanaged) object
    m_pFileInf = gcnew DILib::FileInf();
}

// This is a managed interface which replicates the old 
// unmanaged functionality
bool FileInf::IsDirectory()
{
    return m_pFileInf->IsDirectory();
}

我想说InterOp是否可以工作,然后坚持下去,但是我不确定这是否是解决每个C ++ / .NET接口问题的最佳方法,这是一种替代方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM