win32 标准dll请用API调用方式
[DllImport()]

解决方案 »

  1.   

    在项目里 “引用”添加你的dll,会自动生成一个包装
    下面就像.net里,你可以new一个对象
      

  2.   

    除非这个dll是com组件,否则只能按调用api的方式的调用。[DllImport(""gdi32.dll"", EntryPoint=""AbortDoc"")]
    public static extern int AbortDoc (
    int hdc
    );
      

  3.   

    to Tomgus(小桥流水) :添加引用会提示不是合法的com文件的!to sunyou(砂子):这种方法只能调用一个具体的方法呀,怎么实例化一个类呢?
      

  4.   

    你的这个dll中的类对dotnet来说什么都不是!!!
    因为dot net并不明白你这个dll中数据到底是什么,dll仅仅是个二进制文件的形式,com因为是个标准,所以支持com组件的系统(VC/VS.Net)就明白com组件中的数据类型,包括类,所以vs.net能自动包装你要引用的com组件。如果需要的话你自己用c#包装一下这个类。
      

  5.   

    to sunyou(砂子) : 怎么包装?我根本就没有这个dll的源码!
      

  6.   

    呜呜,楼主和我碰见的问题一样.
    引用时,不合法;
    用[DllImport]编译通过了,但是运行后会提示找不到Entry piont--"Unable to find an entry point named DllMain in DLL test.dll".
    我想能不能在C#中声明同dll中类一样结构的类,再去调用它的相应的方法。
    另,如果我能得到这个vc写的dll的源码,如何用C#包装,向各位高手请教。
      

  7.   

    那就应该是用C++写的DLL的格式不规范!
      

  8.   

    如果你能得到源码,可以把它改成ACTIVATEX控件,重新编译,然后引用。如果没有源码,而且是C++的成员函数,那没有任何方法可以调用。
      

  9.   

    放弃了这种做法,各位如有什么好办法,请通知我,谢谢,[email protected],马上结帖!