我要修改一个三维树的建模程序,树的建模用到我师兄编写的动态库
我现在想修改其中的一个函数,可是我仅仅是把动态库的程序重新编译一遍,没做任何修改,把生成了dll和lib拷到三维树程序替换原来的dll和lib就出现了错误
错误的原因是
Tree.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: class _STL::basic_string<char,class _STL::char_traits<char>,class _STL::allocator<char> > const  __thiscall ETEngine::CETEngine::GetStemTextureFilename(void)const " 
(__imp_?GetStemTextureFilename@CETEngine@ETEngine@@QBE?BV?$basic_string@DV?$char_traits@D@_STL@@V?$allocator@D@2@@_STL@@XZ)
Tree.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: class _STL::basic_string<char,class _STL::char_traits<char>,class _STL::allocator<char> > const  __thiscall ETEngine::CETEngine::GetLeafTextureFilename(void)const " 
(__imp_?GetLeafTextureFilename@CETEngine@ETEngine@@QBE?BV?$basic_string@DV?$char_traits@D@_STL@@V?$allocator@D@2@@_STL@@XZ)
../bin/Debug/EasyTree.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.
没有替换之前运行ok,不知道什么问题请高手帮忙解答一下

解决方案 »

  1.   

    你看看这两个符号在你的Dll工程里面的声明/定义变化了没有你和你师兄使用的编译器是不是一样,引入了STL以后的代码在VC++6和VC++7上面有很大的差异
      

  2.   

    你用dumpbin看看lib里面的内容,主要是看看那两个函数对应的符号是什么,如果那两个符号不对了,链接肯定是没办法完成的
      

  3.   

    我这是用VC6.0的编译器
    请问 newbiestar我如果想要更改动态库里的内容,是不是只要将重新编译过的lib与dll文件替换就行了
      

  4.   

    看你更改发生在什么等级上了,你使用lib+dll的组合的话,应该是隐式加载DLL的,这样的话如果你修改的是接口,包含的头文件也是需要修改的。如果仅仅是修改函数的内容么,一般来说只要更新lib和dll就可以了