现在公司有个在VC6下开发的系统要移植到VS2005或VS2008环境中, 
想要尽量使用之前的资源, 
所以想求教高手,怎么才能在VS2005或VS2008中使用VC6编译的DLL呢?

解决方案 »

  1.   

    将dll文件Import进去,和调用API是一样的
      

  2.   

    using System;
    using System.Runtime.InteropServices;
    namespace ConsoleApplication1
    {
     /// <summary>
     /// Class1 的摘要说明。
     /// </summary>
     class Class1
     {
      [DllImport("VCdll.dll", EntryPoint="Max")]
      public static extern int Max(int a,int b);
      /// <summary>
      /// 应用程序的主入口点。
      /// </summary>
      [STAThread]
      static void Main(string[] args)
      {
       //
       // TODO: 在此处添加代码以启动应用程序
       //
         Console.WriteLine(Max(4,5).ToString());
      }
     }
    }
    其中vcdll.dll就是一个vc编写的dll,但是你还要把函数入口参数换成C#的
      

  3.   

    谢谢如此及时的回复,就是不知道,DLL的放置位置有要求么?
    我在往里面导的时候出错,说什么叫我检查是不是有效的库什么的.蒙了
      

  4.   

    那个DLL不用向你的项目中的引用里面导入,放在你EXE的同一个目录下就行
      

  5.   

    dllImport,你要知道那个VC dll里面有哪些接口函数,然后就跟API一样用就行了
      

  6.   

    哦,原来是这样.
    我之前使用Dll的时候一直是引用了之后再用
    如果使用DllImport,应该就像调INI文件那个API一样吧?
    那是不是得先调查清楚了,这个库里所有的函数和参数列表呢?
    把全部函数显式声明之后,再用呢?(问的多了,不好意思)
      

  7.   

    对,你参照下API的调用,是一样的,得知道DLL的导出函数何参数列表
      

  8.   

    如同使用API函数一样
    添加对System.Runtime.InteropServices的引用
    using System.Runtime.InteropServices;
    然后
    [DllImport("vc6.dll", EntryPoint="funcs")]
    public static extern 程序的返回值的类型 funcs(参数);dll放在exe所在的目录下面