簡體   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