有工程A,输出为A.dll;工程B输出为B.exe。经设置,将二工程输出的dll和exe均放到..\Debug\目录下。且将工程A调试调用的Executable for debug sessions设置为..\debug\B.exe。
    很奇怪的是:
    情况一、若将工程A设置为Active Project,则按F5或者Ctrl+F5,均可正常执行B.Exe并调用A.dll的相关函数;
    情况二、若将工程B设置为Active Project,则可启动B.exe,但却无法调用A.dll的相关函数。
    情况三、直接双击运行b.exe则很奇怪地对同一目录下的A.dll“熟视无睹”,无法调用A.dll。与情况二相同。检测GetlastError,则返回126,无法找到模块。故向诸位求助之!在此写过!

解决方案 »

  1.   

    在工程属性里的debug页面设置一下 Working Directory
      

  2.   

    回复人:palmax(准备学习PHP) ( 一星(中级)) 信誉:105  2007-4-5 11:47:09  得分:0
    ?  在工程属性里的debug页面设置一下 Working Directory
    ------------------
    设过了好像还是没有用
      

  3.   

    情况三,和你的exe使用dll的方式有关,你是怎么引入dll的?是不是和dll注册路径有关
      

  4.   

    用RELEASE编译一下试试吧,或者再REBUILD ALL一下,问题3确实是个问题。
      

  5.   

    LoadLibrary用绝对路径看看,我用2005,debug的时候,VC似乎会改变你的currentdirectory,将其指定到你的工程根目录,而不是DEBUG目录
      

  6.   

    从VC6就是了,从IDE中打开时当前目录会设定为工程所在目录而非DEBUG或RELEASE目录,不过单独执行时会恢复正常
      

  7.   

     回复人:BeRoy(失眠) ( 二级(初级)) 信誉:100  2007-04-09 15:21:45  得分:0

    LoadLibrary用绝对路径看看,我用2005,debug的时候,VC似乎会改变你的currentdirectory,将其指定到你的工程根目录,而不是DEBUG目录
    -----------------------
    我把Debug目录放到跟工程根目录平级了,这样方便些
      

  8.   

    把debug目录添加到PATH变量里面了,还是不行
      

  9.   

    解决了,因为A.dll还依赖于其他的other.dll。但我忘记拷到那个目录下了。
      

  10.   

    我在我的blog里面记录了这个问题
    感谢诸位的解答,稍后结帖。
      

  11.   

    项目->属性->调试 设置工作目录为存放exe,dll的目录
      

  12.   

    解决了,因为A.dll还依赖于其他的other.dll。但我忘记拷到那个目录下了。
    =============
    晕厥...