报错内容:请确保此文件可访问并且是一个有效的程序集或COM组件咋回事?用C++的项目测试没问题。

解决方案 »

  1.   

    c++生成的dll有些是基于MFC开发的,这些只能用C++使用。要其他语言调用的dll必须是用标准Win32方式写的dll项目。
      

  2.   

    如果是COM的话,要用regsvr32注册com 才能引用 
    只是c++的一个普通dll如
    C++dll中函数是这样的
    extern "C" _declspec(dllexport)int _stdcall MyTest() 
    则c#中是这样调用的
    [DllImport("Test.dll", CharSet = CharSet.Auto)]
    public static extern int MyTest(StringBuilder a);注意stdcall  标准调用  楼主可以查查相关资料  详细了解一下
      

  3.   

    我看了下,接口函数中的确没有6楼红色的   stdcall
      

  4.   

    没有的话用
    [DllImport("Test.dll", CharSet = CharSet.Auto, CallingConvention = CALLCONV.CC_CDECL)]
      

  5.   

    lack_cx:  CallingConvention = CALLCONV.CC_CDECL,这句话报错了呀,说什么无法强制类型转换
      

  6.   

    还是没有解决,唉。我按照lake_cx的建议,把dll放在环境路径了,但是没用啊。调试的时候报错,说没找到那个dll
      

  7.   

    非com的原生程序集只能使用显示引用
      

  8.   

    nacarat:你说的话我不太明白:(继续求问。
      

  9.   

    问题已经解决了,使用dllimport的时候dll文件需要放在release\debug下,我一直以为放在.cs文件一个路径的。没看清上面lake_cx的回复。谢谢各位。