我现在有一个已经编译好的SUM.DLL文件,并放到了,正确的目录,
SUM.DLL的代码如下:using System;
namespace test
{
    class sum
    {
        public static int sums(int x, int y)
        {
            return x + y;
        }
    }
}然后我通过别一个文件test.cs来调用这个DLL文件,
test.cs的代码如下using System;
using System.Runtime.InteropServices;
namespace mains
{
    class result
    {
        [DLLImport("sum.dll")]
        public static extern int sums(int x, int y);
        public static void Main()
        {
            Console.WriteLine(sums(10,10).ToString())
        }
    }
}在我运行的时候会提示入口点错误,这是怎么回事啊,
我不想直接使用C#的引用来添加,请大家帮忙告诉我通过DLLImport怎么实现啊。

解决方案 »

  1.   


    那你要写一个能让人DllImport的dll,C#不能直接写这种dll。
      

  2.   

    DLLImport 用于托管程序调非托管程序动态类库. 符合DLL规范的.如果是调用托管程序类库,直接引用就行了。
      

  3.   

    的确是没有办法用这种方式实现,楼主可以通过添加引用来实现,实在不想用这种方式就用反射吧,也是动态的加载dll,然后取出其中的类创建实例,并调用方法,
      

  4.   

    是不是因为这是在.net环境下开发的,属于托管代码,所以不可以这样做啊
      

  5.   


    托管代码也可以做有导出函数的dll,但c#不能。
      

  6.   

    我也记得 [DLLImport("XXX.dll")] 是调用非托管代码的,这个代码我写过。因为你的2个calss是一个工程下的,在class result下直接就可以调用class sum,因为你的sums是静态方法,所以直接这么写就可以了!
     Console.WriteLine(sum.sums(10, 10).ToString());