今天做了一个动态库,是需要在C#上面运行的一个库。由于一些参数的需要用字符串的,但是C#里面又没有字符串, 找了很多资料,才把这个东西弄好。下面介绍一下我的方法。
下面是在 C++ 里面声明的 DLL 方法。
LOGON_LIB_API LONG ConnectLogonSvr(HANDLE hHandle, const char* pLogonIP, int nLogonPort);
LOGON_LIB_API const char* Logon_GetLastError(HANDLE hHandle);
在这个里面,需要连接服务器,要连接服务器,就需要一个字符串类型的参数指向服务器的IP地址。
c# 里面的声明:
[DllImport("logon_lib.dll", EntryPoint = "ConnectLogonSvr")]
public static extern int ConnectLogonSvr(int nHandle , StringBuilder ip , int port );
[DllImport("logon_lib.dll", EntryPoint = "Logon_GetLastError")]
public static extern string Logon_GetLastError(int nHandle);
C# 里面的调用
StringBuilder ip = new StringBuilder() ;
ip.Append("10.1.52.210");
long nRet = ConnectLogonSvr(nHandle, ip, 2001 );
通过这样的方法可以完成C#调用带有字符串参数的DLL 方法。