在一些情况下需要用C#调C或者C++或者VB写的dll。一般dll实现了Com。用C#的加载dll的方式申明相同方法调用经常很难匹配参数。不同语言类型不同。
例如如下:
/// <summary>
/// 读就诊卡
/// </summary>
/// <param name="pOutInfo">输出结果</param>
/// <returns></returns>
[System.Runtime.InteropServices.DllImport("DC_Reader.dll")]
private static extern long iReadCardNo(IntPtr pOutInfo);
/// <summary>
/// 读身份证
/// </summary>
/// <param name="pOutInfo">输出结果</param>
/// <returns></returns>
[System.Runtime.InteropServices.DllImport("DC_Reader.dll")]
private static extern long iReadIdentityCard(int itype,IntPtr pOutInfo,int iCreatPhoto=0);
所以一种比较容易的方式就是注册对方dll到Com,然后工程直接引用Com组件。
注册dll,在管理员命令行运行
regsvr32 D:\SVN临时\trunk\1.iMedicalLIS\4.CS打印\打印器\ReadCard\bin\Debug\ReadCard.dll
取消注册dll
regsvr32 /u D:\SVN临时\trunk\1.iMedicalLIS\4.CS打印\打印器\ReadCard\bin\Debug\ReadCard.dll
注册好之后就能在C#工程添加引用
然后就能和调C#dll一样调用对方dll的方法了