过程如下:
EXE程序A在一处调用了DLL B,在某一处调用了DLL C,DLL C又调用了DLL D,而DLL D和DLL B只是大小写不同,因此程序报错,它好像是在应该调用DLL D中函数时依然调用了DLL B.
见笑,不知大家能否看懂我的文字,感觉像绕口令了!
先谢了

解决方案 »

  1.   

    把这两个DLL分别放在两个不同的目录下面,然后在程序中用显式加载的方法调用DLL中的函数
    在LoadLibrary的时候最好加上全路径!
      

  2.   

    LoadLibrary加上全路径,放在不同的目录下(或一个放在系统目录下,一个放在当前目录下)。重名时按以下顺序查找:
    1.执行文件所在目录下。
    2.进程的当前目录。
    3.WINDOWS系统目录。
    4.WINDOWS目录。
    5.列在PATH环境变量中的目录。
      

  3.   

    太谢谢大家伙了;好久好久没到Visual V++技术板块提问了;想不到今天一提问就有这么多人回答,好温暖,就像见到老友一样,谢谢!诸位的办法我都试过了,看有没有其他办法
      

  4.   

    可能这样描述更合适一些:
    现在遇到一问题,在VC6.0编译的应用程序中,调用.Net生成的托管代码,碰巧在托管和非托管的DLL库文件中,有重名的文件。非托管为动态加载(LoadLibrary),托管为静态引用;先加载非托管,而后无法加载托管库。由于这是两个较大系统的集成,改变哪一个文件名称都不大可能,有什么高招?
      

  5.   

    是不是.Net环境并不重要,重要的是怎么告诉系统它什么时候该分别调用谁(虽然他们重名)
      

  6.   

    能否改变系统在加载DLL重名情况下的查找顺序?
      

  7.   

    如何让系统分别加载同名但不同路径和公能的两个DLL
      

  8.   

    把两个dll改成同名,再试试看用连接器的延时加载参数。
    打开Project->Setting对话框,link选项卡,在最下面连接器参数框中输入:/DelayLoad:yourdll.dll
      

  9.   

    把这两个DLL分别放在两个不同的目录下面,然后在程序中用显式加载的方法调用DLL中的函数
    在LoadLibrary的时候最好加上全路径!
      

  10.   

    谢谢大家,所有的方法我都试过了,MD,最后实在没法还是改了名;不过我想把另一个封装成进程外Com Dll是不是可以解决这个问题呢?为了感谢大家还是先结帖吧