近日遇到一个问题,请教各位大侠,有一个VC++工程,原来是用 Visual Studio 2003 编译的,这个工程生成的可执行文件在运行时要调用一个dll中的函数,这个dll文件不在工程中,是第三方开发的,没有源代码。
用 Visual Studio 2003 编译的exe文件运行时调用那个dll中的函数,返回值正确,没有任何问题,一些正常。
但后来将这个工程改用 Visual Studio 2008 编译(从2003的工程直接升级),在 2008 编译也能通过,但2008编译版的exe运行时调用同一个dll中的函数返回值出错,导致程序不能正常运行。请教各位大侠,像这种升级了编译器后导致调用dll出错的问题一般应该怎么处理呢?(注意,还使用原来的dll;另外补充一下,exe文件是命令行程序,没有使用.net framework里的功能)

解决方案 »

  1.   

    dll做的不通用,你还得使用VS2003要不你用VS2003再做一个标准的DLL,然后由2008使用。
      

  2.   

    用vc2008是为了支持64位?新的编译器下,可能有些结构的宽度(sizeof)变化了,检查一下传入该函数的参数,是否存在这个问题.
      

  3.   

    有一种可能是
    你的DLL依赖于原来的VC++运行环境,主要是那几个DLL,
    VS版本升级后的DLL版本不同
    解决方法是将原来的VC++的那几个DLL找出来复制到你的DLL的目录里