我有C DLL从C#发送参数到c dll

时间:2014-07-31 13:22:26

标签: c# c pinvoke

我试图从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);
}

1 个答案:

答案 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不应该对函数调用的结果产生任何影响,它更正确。我做的另一个更改是删除在逐字字符串中应该为\\的虚假\

如果您仍然没有成功,则该问题与该功能的签名无关。