powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / MSVS2005, MFC, "unresolved external symbol"
17 сообщений из 17, страница 1 из 1
MSVS2005, MFC, "unresolved external symbol"
    #34725721
NSFuimus1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
создал MFC Extension dll, в ней среди прочего классы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
class _declspec(dllexport) CImageListEx : public CImageList
{
...
}
...
class _declspec(dllexport) CListCtrlEx: public CListCtrl, public CListBase
{
...
protected:
	static CImageListEx m_LargeImageList;
	static CImageListEx m_SmallImageList;
...
}
библиотека собирается нормально ..., включаю ее в "нормальный" проект (*.exe) - при линковке коего вываливает строки
Код: plaintext
1.
2.
StdAfx.obj : error LNK2001: unresolved external symbol "protected: static class CImageListEx CListCtrlEx::m_SmallImageList" (?m_SmallImageList@CListCtrlEx@@1VCImageListEx@@A)
StdAfx.obj : error LNK2001: unresolved external symbol "protected: static class CImageListEx CListCtrlEx::m_LargeImageList" (?m_LargeImageList@CListCtrlEx@@1VCImageListEx@@A)
в StdAfx.h проекта включены и ImageListEx.h и ListCtrlEx.h ... что за фикня эта может быть?
...
Рейтинг: 0 / 0
MSVS2005, MFC, "unresolved external symbol"
    #34725757
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавить в библиотеке:

Код: plaintext
1.
2.
CImageListEx CListCtrlEx::m_LargeImageList;
CImageListEx CListCtrlEx::m_SmallImageList;
...
Рейтинг: 0 / 0
MSVS2005, MFC, "unresolved external symbol"
    #34725762
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в cpp файле надо прописать инициализацию или просто объявление для этих статических членов класса
--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
MSVS2005, MFC, "unresolved external symbol"
    #34725790
NSFuimus1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
эээ ... в об одном и томже? в listctrl.cpp -
Код: plaintext
1.
2.
3.
4.
...
CImageListEx CListCtrlEx::m_LargeImageList;
CImageListEx CListCtrlEx::m_SmallImageList;
...
? если "да", то это уже есть ... вообще эти классы нормально работают "просто" в проекте ... а вот из MFC Extension dll - не получается подключить
...
Рейтинг: 0 / 0
MSVS2005, MFC, "unresolved external symbol"
    #34725916
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NSFuimus1 пишет:

> создал MFC Extension dll, в ней среди прочего классы

Подозреваю, что не нужно тебе MFC Extension dll. А нужно просто
..dll.

А по поводу проблемы - статические члены надо не только объявлять,
но и определять.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
MSVS2005, MFC, "unresolved external symbol"
    #34725957
NSFuimus1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2MasterZiv
дык нет - нужна именно "MFC Extension dll" ...
дык я ж говорю - и объявлены в "ListCtrlEx.h" и определены в "listctrl.cpp", где ж их гадов еще прописать нада?
...
Рейтинг: 0 / 0
MSVS2005, MFC, "unresolved external symbol"
    #34726184
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NSFuimus1 пишет:
> дык нет - нужна именно "MFC Extension dll" ...

Ты уверен, что тебе именно "MFC Extension dll" нужна,
и знаешь, зачем ? И понимаешь все последствия ?

> дык я ж говорю - и объявлены в "ListCtrlEx.h" и определены в
> "listctrl.cpp", где ж их гадов еще прописать нада?


Я не знаю как оно там определено. Кода -то нет.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
MSVS2005, MFC, "unresolved external symbol"
    #34726217
NSFuimus1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторТы уверен, что тебе именно "MFC Extension dll" нужна,
и знаешь, зачем ? И понимаешь все последствия ?

... разумеется, знаю ... пишу на MFC, общие классы из нескольких проектов решил оформить в виде MFC Extension dll, экспортировать классы ... что там такое с последствиями? сам пользуюсь сторонними классами оформленными таким же образом ... в их исходных кодах решения своей проблемы не нашол - вот и пишу сюда ...
...
Рейтинг: 0 / 0
MSVS2005, MFC, "unresolved external symbol"
    #34726281
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не может ли быть такое что твое объявление _declspec(dllexport) воспринимает как объявление на экспорт и в длл не лезет за классами поэтому и не видит их, переправь для exe на import и посмотри что получиться
--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
MSVS2005, MFC, "unresolved external symbol"
    #34727525
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NSFuimus1 пишет:

> ... разумеется, знаю ... пишу на MFC, общие классы из нескольких
> проектов решил оформить в виде MFC Extension dll, экспортировать классы
> ... что там такое с последствиями? сам пользуюсь сторонними классами

Тебе нужно идентификаторы ресурсов особым образом генерировать.
В особом участке номеров. Так, чтобы они гарантированно не совпадали
с пользовательскими. И с другими MFC-шными. В общем -то это не нужно,
потому что гораздо легче и правильнее просто задавать hInstance явным
образом перед (или во время) загрузки ресурса.и
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
MSVS2005, MFC, "unresolved external symbol"
    #34727798
NSFuimus1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прошу прощения, но ресурсы причем здесь в данной конкретной проблеме?
я в курсе возможных проблем с ресурсами при экспорте классов из MFC Extension dll, и так же в курсе возможных решений этих проблем
...
Рейтинг: 0 / 0
MSVS2005, MFC, "unresolved external symbol"
    #34728244
NSFuimus1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
насколько понял ошибка генерируется все же статической функцией-членом класса обеспечивающей доступ к статической переменной, те описание класса из первого поста дал не полное:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
//CImageListEx.h
class _declspec(dllexport) CImageListEx : public CImageList
{
...
}
...
//CListCtrlEx.h
class _declspec(dllexport) CListCtrlEx: public CListCtrl, public CListBase
{
...
public:
	static CImageListEx* GetImages () // 
	{
		return &m_SmallImageList;
	}
...
protected:
      static CImageListEx m_SmallImageList;
...
}

//CListCtrlEx.cpp
...
CImageListEx	CListCtrlEx::m_SmallImageList;
...
еще раз скажу - код классов совершенно рабочий, взят из действующих проектов, все изменения - это директива _declspec(dllexport) в заголовке классов ... что еще нужно сделать, чтобы GetImages "правильно увидел" m_SmallImageList?
...
Рейтинг: 0 / 0
MSVS2005, MFC, "unresolved external symbol"
    #34728269
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
о том то и речь, что изменив эту директиву, ты жестко приписываешь экзешнику экспортировать этот класс и его реализация должна по идее быть подцеплена к самом экзешнику, а надо, когда ты делаешь экзешник изменять эти директивы на _declspec(dllimport), иначе твой экзешник так и будет таскать за собой весь тот код от которого ты так упорно хочешь избавиться!!!!
--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
MSVS2005, MFC, "unresolved external symbol"
    #34728298
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NSFuimus1 пишет:

> прошу прощения, но ресурсы причем здесь в данной конкретной проблеме?

В данной - в смысле "unresolved external symbol" - ни при чем.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
MSVS2005, MFC, "unresolved external symbol"
    #34728550
NSFuimus1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Cerebrum
серьезна задумался над твоими словами и вроде фсе получилось :) ... те MFC Extension dll мы должны всеже собирать с директивой _declspec(dllexport), а вот когда *.h файлы мы включаем в к.-л. проект в заголовке должно стоять _declspec(dllimport) ... те решается объявлением типа
Код: plaintext
1.
2.
3.
4.
5.
	#ifdef _EXPORTDIRECT_
	   #define MYEXPORTDLL  _declspec(dllexport)
	#else
	   #define MYEXPORTDLL  _declspec(dllimport)
	#endif
в нужном месте, _declspec(dllexport) в заголовках классов заменяем на MYEXPORTDLL, в настройках проекта собственно MFC Extension dll в Preprocessor Definition добавляем _NSFREPENV_, а в проекте *.exe такого обявления нет - соответственно MYEXPORTDLL будет при компиляции распознаваться как _declspec(dllimport) ... пасибки
...
Рейтинг: 0 / 0
MSVS2005, MFC, "unresolved external symbol"
    #34728557
NSFuimus1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
эээ ... _NSFREPENV_ имелось ввиду _EXPORTDIRECT_
...
Рейтинг: 0 / 0
MSVS2005, MFC, "unresolved external symbol"
    #34728625
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NSFuimus12Cerebrum
серьезна задумался над твоими словами и вроде фсе получилось :) ... пасибки
пожалуйста, если бы вчера читал внимательнее выиграл бы день
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / MSVS2005, MFC, "unresolved external symbol"
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]