C#程序里需要调用一个"Sa7134Capture.dll"的组件(C++),在2005环境下把这个组件放在bin下面,代码中写了
   /// <summary>
   /// 返回系统当中设备数量。
   /// </summary>
   /// <returns>数量 。为0时表示没有设备存在</returns>
   [DllImport("Sa7134Capture.dll")]
   private static extern long  VCAGetDevNum();
这样编译后没有问题,并能返回设备的数目。但是把它换到另一台机子上,程序编译就有问题,总是提示//无法加载DLL“Sa71343Capture.dll”:找不到指定的模块。(异常来自HRESULT:0x8007007E)。//我在bin和System下面都拷贝了Sa71343Capture.dll,但还是找不到。用regsvr32 Sa7134Capture.dll 好像也不行!
 高手帮我看看怎么回事,谢谢先!

解决方案 »

  1.   

    1)首先用绝对地址测试一下,该文件是否可以引用
    2)可以,放到bin或者system32,就一定可以
    3)可以 ,放到bin,system32仍不可以,那你倒霉。
    4) 不可以,文件有问题。或者目标机器缺少其他运行环境
      

  2.   

    可能你的DLL还要调其他的东西
      

  3.   

    我自己的机器不论使用绝对地址还是绝对地址都没有问题,但后来那台机器不管我怎么改变路径都是无法加载;我也怀疑文件有问题,重新安装后还是不行! greennetboy说“目标机器缺少其他运行环境”想请教一下还有什么环境?
      

  4.   

    我想是你在项目里面没有引用DLL文件吧!?
      

  5.   

    你try try 把它添加到工程的引用里去(references)
      

  6.   

    Sa71343Capture.dll 不是标准的COM控件,是不能直接加到引用中的。它是VC++写的。
      

  7.   

    没有遇到过这么复杂的咚咚。我写代码都是和Com通信滴,
    关注,UP
      

  8.   

    有可能还缺少其他的文件右键点击那个dll,view dependencirs工具看一下都需要哪些文件
      

  9.   

    谢谢WanttoBe,问题解决了。它确实依赖其它的dll!