请教一个问题。我用Delphi调用Vc的动态库。在Vc动态库里有一个Exit(0)语句,本意是想退出Vc动态库。运行结果是主调的Delphi程序也同时退出了。动态库中应该如何写退出语句,才能让Vc动态库退出而主调程序不自动退出呢?

解决方案 »

  1.   

    VC中应该是退出某个函数,用return(0);吧?
      

  2.   

    那位老兄在VCDLL中很多地方用了Exit。改起来很麻烦的。
      

  3.   

    >>只有函数才会有return.
    VC中除了函数,还有什么?
      

  4.   

    问题是那小子到处都用了Exit(0).而且主调函数有多层嵌套。在子函数中把Exit(0)改成Return,要在所有的父函数中作相应处理才行。很麻烦。
      

  5.   

    改成Return方式不容易呀。不知道有没有别的方法,只让Dll退出,而不让主调程序退出。
      

  6.   

    >>问题是那小子到处都用了Exit(0).而且主调函数有多层嵌套。在子函数中把Exit(0)改成Return,要在所有的父函数中作相应处理才行。很麻烦。把那小子找出来,吊起来打呵呵,开玩笑,慢慢改吧^^
    或者在DELPHI中跟踪一下,看能不能把它拦下来
      

  7.   

    拦不下来,从VCDLL出来后直接退出。跟本不再到Dephi主调程序了。
      

  8.   

    如果主调程序是VC程序,是不是会出现同样的结果? 
    Dll不是和主程序在不同的进程中吗?
      

  9.   

    能不能向线程中那样用SUSPEND方法呀?
      

  10.   

    我用了一个回调函数。在VCDLL遇到要退出时,调用这个回调函数通知Delphi的主调程序。主调程序再调用FreeLibrary函数。但是这样会有二个问题:1,当执行FreeLibrary时会产生异常。2,如果这样退出的话,VCDLL中的new语句是不是会产生内存泄漏?