用DLLImport和Reference导入一个dll到工程里有什么不同吗? 如题:
经常看到用DLLImport导入一些dll,如[DLLImport(xxxx.dll)]
但也有一些用鼠标右键点Reference,在弹出菜单中选择Add Reference,窗口中选择dll这两个有什么不同吗?谁能解释一下,谢谢!

解决方案 »

  1.   

    Add Referece引用C#寫的.dll文件。
    DLLImport系統的API,一般不是C#寫的,是C/C++寫的。
      

  2.   

    两者 DLL 不是一回事。 Add Reference 引入 ActiveX DLL; DLLImport 引入的不是,是 动态链接库
      
      

  3.   

    右键点Reference,在弹出菜单中选择Add Reference,窗口中选择dll可是非托管的DLL,也可以鼠标右键引用啊,正常使用
      

  4.   

    .net组件生成的代码是MSIL,当然可以被直接读取   
      而COM   组件和kernel32.dll等以前的动态连接库是生成的二进制本地代码   
      所以必须进行平台调用   
      而COM组件也不是全部都可以吧   
      COM   组件遵循标准写的,所以.net可以用固定的机制调用   
      而普通的.dll二进制动态连接库因为写法没有限制   
      所以只能自己声明了。   
        
      用.net的语言说的话   
      .net中所有CTS类型都素类型安全的,   
      而.net平台的CTS以外的类型都素不安全类型   
      所以你在.net中要调用以前你使用不安全类型写的动态连接库的话就必须使用不安全类的平台调用,也就素你说的DllImport,建议你查一下MSDN关于平台调用方面的文章以上內容摘自http://topic.csdn.net/t/20060305/13/4593639.html