CompilerParameters.ReferencedAssemblies.Add("System.dll");
此语句只能加载系统的DLL文件或者C#自己编译的DLL文件吗?例如
我目前有一个C++的test.dll文件以及test.cs文件,我只要在DEBUG里面添加我的test.dll文件,已经在程序中引用现有项目test.cs就可以正常使用,可是一旦使用动态编译的CompilerParameters.ReferencedAssemblies.Add方法就会提示无法使用,这是神马情况呢?请高手指点

解决方案 »

  1.   

    c++写的dll是非托管dll,没法用程序集加载,不能使用CompilerParameters.ReferencedAssemblies.Add方法,你写成test.cs静态引用是可以的,如果要动态调用,你只能用 操作dll的api函数比如LoadLiberary等,
      

  2.   


    [DllImport("kernel32")]
    static extern IntPtr LoadLibrary(string lpFileName);
    [DllImport("kernel32)]
    static extern IntPtr GetProcAddress(IntPtr hModule, string procName);第一个函数加载非托管dll,参数为dll路径,返回一个句柄。
    第二个函数获得指定函数名的函数指针。第一个参数为LoadLibrary所获的句柄,第二个参数为函数名称。返回的IntPtr可以通过Marshal的一个静态方法转为delegate。也可以在GetProcAddress的声明中直接将返回的类型定义为delegate。
      

  3.   

    PINVOKE方面的知识你baidu下或google下