我想从我的应用程序中调用任何人并找到此方法,但它不起作用..
namespace SysWin32
{
class programm
{
[DllImport("Tapi32.dll")]
public static extern long tapiRequestMakeCall(string Number, string AppName, string CalledParty, string Comment);
}
}
答案 0 :(得分:0)
假设您将代码放在正确的位置,您问题中的代码会完美编译。您报告的编译器错误与问题中不存在的代码有关。
也许您已将问题中的代码嵌套在另一个类中。例如这段代码:
namespace ConsoleApplication1
{
class Program
{
namespace SysWin32
{
class programm
{
[DllImport("Tapi32.dll")]
public static extern long tapiRequestMakeCall(string Number,
string AppName, string CalledParty, string Comment);
}
}
static void Main(string[] args)
{
}
}
}
导致与您报告的错误类似的错误。当然,我不得不猜测你的真实代码是什么。也许这是一个变种。无论如何,关键是问题中的代码是正常的,但问题在于它周围的代码,我们看不到的代码。
我还要指出函数返回类型是错误的。在Windows上的C和C ++中,long
是32位有符号整数。在C#中,long
是64位有符号整数。所以tapiRequestMakeCall
的返回值类型应该在C#p / invoke声明中声明为int
。
以下代码将编译:
namespace ConsoleApplication1
{
class programm
{
[DllImport("Tapi32.dll")]
public static extern int tapiRequestMakeCall(string Number,
string AppName, string CalledParty, string Comment);
static void Main(string[] args)
{
}
}
}