现在外部的动态库导出函数的方法未知(可能是COM,可能是普通的函数导出方式),是VC生成的还是C++Builder生成的也未知,只能肯定这些库不是.NET编译的,而且可能有一部分Windows的底层操作.由于从没用过C#,所以想问一下,在C#中调用这种动态库是否可行,是否有什么隐患?
另外,如果可以用.NET调用的话,用那个版本的.NET会更好一些(1.1? 2.0?还是更高的版本?),最好能简单的说明一下原因.谢谢

解决方案 »

  1.   

    在C#中可以调用动态库是否可行,好像没什么隐患。1.1 或者2.0的版本都可以。using System;
    //这是用到DllImport时候要引入的包
    using System.Runtime.InteropServices;public class InvokeDll {[DllImport("外部生成的DLL.dll", CharSet=CharSet.Auto)]//声明外部的标准动态库的函数, 跟Win32API是一样的.
    static extern int add(int a,int b);public static void Main()  {  //使用外部的标准动态库的函数
      Console.WriteLine(add(10,30));  }}
      

  2.   

    不管对方的dll是什么编译的,但肯定符合dll的规范吧!所以用c#调用没有什么大问题,网上相关的文章很多,
    可能比较麻烦点是类型转换和函数在C#中的声明建议用VC++.NET建一个包容类dll,然后C#就可以很自然地使用这个VC.NET的包容dll了
      

  3.   

    楼上正解
    1。符合dll规范
    2。注意类型转换
    3。基本语法 [DllImport("system32.dll"] 
      

  4.   

    谢谢大家的回复,之所以有这个疑问是因为我曾经在使用WinIO库时发现同样的代码,在vc6+sp6下可以正常使用,可是换成vs2003+sp1就不能正常工作....所以很郁闷由于对方提供的库可能会有一些底层的操作,我就怕会出现同样的问题...