我试图从C#调用一个C dll。我调用的函数在dll中声明,如下所示
int WINAPI checkConnectivity(char *fqdn, int port);
我想将参数“www.google.com”发送到char * fqdn
8080 to int port作为参数通过C#
[DllImport(@"E:\\ASip.dll")]
public static extern int checkConnectivity(StringBuilder fqdn, int port);
private void button1_Click(object sender, EventArgs e)
{
StringBuilder colourstring = new StringBuilder("www.google.com");
int nb = checkConnectivity(colourstring, 80);
}
答案 0 :(得分:0)
text参数似乎是一个输入参数。在这种情况下,正确的声明是:
[DllImport(@"E:\ASip.dll", CharSet=CharSet.Ansi)]
public static extern int checkConnectivity(string fqdn, int port);
像这样调用函数:
int nb = checkConnectivity("www.google.com", 80);
从StringBuilder
更改为string
不应该对函数调用的结果产生任何影响,它更正确。我做的另一个更改是删除在逐字字符串中应该为\\
的虚假\
。
如果您仍然没有成功,则该问题与该功能的签名无关。