VC2005的一个DLL工程,一个测试程序EXE的。
如果这两个工程DLL在一台电脑上编译,EXE在另外一台电脑上编译调用的时候会出错(也不是所有电脑都出错)。如果两个工程都在一个电脑上编译那么不出错。怎样才能解决这个问题?谢谢!

解决方案 »

  1.   

    是不是你的dll中有些要预定义的宏,我以前遇到过这种情况
      

  2.   

    DLL最好也要设成静态编译。
      

  3.   

    我也感觉是依赖的DLL 版本不一致导致的,楼主把错误信息贴出了看看
      

  4.   

    应该是CRT库或者MFC库版本导致的。静态编译应该就没问题了。
      

  5.   


    规范/成熟/有修养的程序员,在发布程序代码时,都会注明:“本程序代码在:Windows XP SP2, VS2005,.Net FrameWork 2.0,下编译通过”类似以上的注明,就是编译环境。--------------------
    以下只是帮楼主分析:1、如果楼主用的是C#,则,有的电脑安装了.Net FrameWork,有的没装。没装的运行出错。2、楼主的DLL和EXE,可能用了“公用”的DLL,不同的电脑,这个“公用”的DLL版本不同。
    --所以,要在不同的电脑上运行,也就是程序要发行了(Release),编译时都用静态链接。3、楼主的DLL和EXE,用了“公用”的.h,不同的电脑,这个“公用”的.h版本不同。
    --所以,程序员的电脑都是要“专用”的,因为“专用”,所以你清楚你的电脑安装了什么东西,清楚这些东西的版本。
    --如果电脑不能专用,则你要马上想到,是编译环境造成了这个问题。
      

  6.   

    1 .Net FrameWork 版本问题
    2  是否编译环境不同,这里说的是操作系统(简繁体)
    自己检查检查