现在在做一个项目,要调用C/C++的动态链接库,问题是这些库是不确定的,随时可能增加,请问在这种情况下有没有可能实现,思路是什么? DLLImport(“DLL文件”)]
修饰符 extern 返回变量类型 方法名称 (参数列表)   --------这种方式肯定行不通吧?补充下,对于C/C++库这里可以给出合理的编写规范。目的:设计一个程序,在程序指定目录放入库文件后,可以在程序中调用到库文件中的函数。先谢谢了。

解决方案 »

  1.   

    这个不可能吧
    除非dll文件名和到处函数的函数名以及函数签名和返回值都约定好不变
      

  2.   

    可以尝试调用系统API:LoadLibrary、 GetProcAddress等方法,自己用c++再写一个接口函数,难度比较大,但可能能实现,
      

  3.   

    5楼说的很到位,楼主,“问题是这些库是不确定”,你的动态库再怎么不确定,但对应程序来说,它关心的是函数接口,你不声明,C#怎么能知道呢?但也有接近你的想法:
    1、利用反射实现动态平台调用。核心是利用DynamicDllFuntionInvoke方法。
    2、利用Marshal.GetDelegateForFunctionPointer 实现动态平台调用。这两种方法,都是动态实现平台调用,过程远比静态平台调用复杂,很容易出错!而且,事先必须清楚C++的函数原型,这点跟函数指针是一样道理。所以,楼主最好还是有静态调用的办法,就多些手工活而已,出问题能很快定位