Перешел на 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++'
Re: Перешел на VS7 --> появились ошибки линковщика.
От: peter36rus  
Дата: 28.07.03 17:59
Оценка:
оппа...

а вот это уже не лечится предыдущим методом (класс Color имеет статический White):

qwer.obj : error LNK2001: unresolved external symbol "public: static class LibABC::Color LibABC::Color::White" (?White@Color@RelAPI@@2V12@A)

хотя экспортируемый символ ?White@Color@RelAPI@@2V12@A в библиотеке LibABC явно присутствует:

3531 DC8 002C9168 ?White@Color@RelAPI@@2V12@A

что же делать?

помогите, кто знает!

пробовал собирать библиотеку LibABC

и так:

Color DLL_CALL Color::White(255,255,255);

и так:

Color Color::White(255,255,255);
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.