Перешел на VS7 --> появились ошибки линковщика.
От: peter36rus  
Дата: 28.07.03 16:42
Оценка:
Есть a.dll в ней есть класс (описан в a.h)


template<class T>
class UTILS_DLL_CALL StrPtr{
  T* p;
public:
  StrPtr(const T* _p=0):p(0){assignString(p,_p);}
  ~StrPtr(){delete[] p;}   
....

};


Есть b.dll и в ней инстанцируется этот класс

и при линковке появляются ошибки типа

b.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall StrPtr<char>::~StrPtr<char>(void)" (__imp_??1?$StrPtr@D@@QAE@XZ)

При рассмотрении могучей утилитой DUMPBIN выяснилось, что такое у нас есть:
1 0 000010A0 ??0?$StrPtr@D@@QAE@PBD@Z
2 1 00001122 ??0?$StrPtr@G@@QAE@PBG@Z
7 6 0000100F ??1?$StrPtr@G@@QAE@XZ
16 F 00001032 ??B?$StrPtr@D@@QBEPBDXZ
17 10 00001159 ??B?$StrPtr@G@@QAEPAGXZ
18 11 0000115E ??B?$StrPtr@G@@QBEPBGXZ
23 16 00001078 ??_F?$StrPtr@D@@QAEXXZ
24 17 00001104 ??_F?$StrPtr@G@@QAEXXZ

И тут меня осенило: __declspec(dllimport) не нужен в VS7.

Убрал дефайн нужный (чтоб UTILS_DLL_CALL вырождался в пустое место), и все собралось.

Вот. Пока писал вопрос -- сам нашел ответ. Кажется.

Если у кого-то возникало подобное -- ответьте.

29.07.03 17:43: Перенесено из 'C/C++'
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.