现在有个C++做的DLL,我想用C#调用它的两个方法,这两方法的申明是:
class CHANNEL_API IMessageChannel
{
public:
virtual HRESULT SendRequest(Message* msg) = 0;
virtual HRESULT SetAddressPort(LPCTSTR Url, int port) = 0;
};
其中Message是一个
struct Message
{
TCHAR Command[MAX_PATH];
DWORD Flags;
TCHAR*  Result;
};
请问我要如何在C#中调用这两个方法呢?
解决即送分~~ 谢谢大家了~!

解决方案 »

  1.   

    http://www.pcvz.com/Program/Programs/CCC/CCCsystem/Program_98258.html
      

  2.   

    如果dll输出函数是类的成员函数之类,dllimport不容易找到函数入口,因为用dumpbin输出dll函数为乱码。
      

  3.   

    [StructLayout(LayoutKind.Sequential,CharSet = CharSet.Auto) ]  
    public class Message
    {
    [MarshalAs(UnmanagedType.ByValTStr,SizeConst=MAX_PATH)]
    public string command;
    public int  Flags;
    [MarshalAs(UnmanagedType.LPTStr)]
    public string Result;
    }
    -----------------------------------------------
    [DllImport("yourdll")]
    public static extern void SendRequest(ref Message msg);
    [DllImport("yourdll")]
    public static extern void SetAddressPort(string Url,int port);
    没用过C++,不知道写得行不行,供你参考