//系统的dll
[DllImport("user32.dll")]
public static extern int MessageBoxA(IntPtr h, string m, string c, System.UInt32 type);
//自己的dll
[DllImport("ClassLibrary1.dll")]
public static extern string UserID();下面是:
string a = UserID();//此处报出不可以加载ClassLibrary1.dll,为什么????????
IntPtr h = new IntPtr(0);
MessageBoxA(h, "Hello", "标题", 0);

解决方案 »

  1.   

    C#生成的DLL与传统的DLL是不一样的,你调用自己生成的DLL与调用传统的DLL方法一样的话,会出现问题.
    要调用自己生成的DLL,直接"添加引用"就可以了.然后在代码里using yourdll
      

  2.   

    路径,把你的dll考到system32,或者应用程序所在目录
      

  3.   

    我把它CP到System32下后,还有一个错误:未能找到入口
      

  4.   

    未能找到入口的原因会是什么呢?
    生成dll的class文件有问题吗? 等待高手指点ing...using System;namespace ClassLibrary1
    {
    /// <summary>
    /// Class1 的摘要说明。
    /// </summary>
    public class Class1
    {
    public static bool Swap(long i,long j) 

    i = i+j;
    j = i-j;
    i = i-j;
    return true; 
    }
    }
    }
      

  5.   

    就是在.net环境中,用class文件自动生成的dll文件(C#代码)
      

  6.   

    你写的这种DLL没有入口函数亚,自然不行。
    你的调用方程序是什么语言?如果也是C#的话,直接Reference引用不就可以用了么,干嘛这么麻烦。
      

  7.   

    是C#,我是想先调用自己的dll试试,以后也好调用其它的dll
    我的QQ 18473575 不怕麻烦的高手请加!!!
      

  8.   

    我也遇到过类似的问题,C#写的dll在vb.net中没办法调用,好在.net环境中允许不同语言在同一解决方案中共存。最后我把两个代码放在同一解决方案中就可以用了。如果你的项目允许的话,可以试试这种方法。
      

  9.   

    上面都解答了,如果是用的。NET生成的DLL的话,直接添加引用就行了
    如果是别的程序生成的DLL,找不到入口点就是路径问题
      

  10.   

    楼上说的有道理.
    添加到引用就可以.
    然后USING一下.
      

  11.   

    看来肯定是我的class文件有问题
    怎样写一个正确的class文件,设置其入口呢
    希望能给我一个简单的,能说明问题的例子 等待ing...
    (我的QQ:18473575 Email:[email protected] , [email protected])
    (第一次接触DLL,望大家不吝赐教)
      

  12.   

    DLL有不同的种类。有C的DLL、VC的DLL,C#的DLL等。每种都不一样的。
    C和VC的DLL中有些函数可以使用DllImport引入.net中使用。非COM的C、VC的DLL不能通过添加引用使用。
    C#的DLL可以直接添加引用使用。也可以动态加载程序集的方式使用(见System.Reflection.Assembly类)。但不可以通过DllImport引入。