无效的令牌命名空间、类型或命名空间未找到,无效的令牌“{”

invalid token namespace, type or namespace not found, invalid token "{"

我想从我的应用程序中调用任何人并找到此方法,但它不起作用..

    namespace SysWin32
    { 
        class programm
        {
            [DllImport("Tapi32.dll")]
            public static extern long tapiRequestMakeCall(string Number, string AppName, string CalledParty, string Comment);
        }

    }

假设您将该代码放在正确的位置,您问题中的代码可以完美编译。您报告的编译器错误与问题中不存在的代码有关。

也许您将问题中的代码嵌套在另一个 class 中。例如这段代码:

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)
        {
        }
    }
}

导致与您报告的错误类似的错误。当然,我不得不猜测您的真实代码是什么。也许这是一个变体。不管了,关键是题中的代码没问题,问题出在它周围的代码,我们看不到的代码。

我还要指出函数 return 类型是错误的。在 Windows 上的 C 和 C++ 中,long 是一个 32 位有符号整数。在 C# 中,long 是一个 64 位有符号整数。因此,tapiRequestMakeCall 的 return 值类型应在 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)
        {
        }
    }
}