powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Static Linking
11 сообщений из 11, страница 1 из 1
Static Linking
    #34637015
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
написал dll (win32 api, vs 2005 sp1) хочу забацать статической библиотекой, но при компиляции выплывают следующие ошибки

ошибкиRString.obj : error LNK2019: unresolved external symbol __imp___wassert referenced in function "public: __thiscall RString::RString(char)" (??0RString@@QAE@D@Z)
RString.obj : error LNK2019: unresolved external symbol __imp__memcpy_s referenced in function "public: __thiscall RString::RString(char const *)" (??0RString@@QAE@PBD@Z)
RString.obj : error LNK2019: unresolved external symbol __imp___wcsdup referenced in function "public: bool __thiscall RString::ConvertToOem(void)" (?ConvertToOem@RString@@QAE_NXZ)
RString.obj : error LNK2019: unresolved external symbol __imp___strdup referenced in function "public: bool __thiscall RString::ConvertToUnicode(void)" (?ConvertToUnicode@RString@@QAE_NXZ)
RString.obj : error LNK2019: unresolved external symbol __imp___strrev referenced in function "public: bool __thiscall RString::MakeReverse(void)" (?MakeReverse@RString@@QAE_NXZ)
RString.obj : error LNK2019: unresolved external symbol __imp___wcsrev referenced in function "public: bool __thiscall RString::MakeReverse(void)" (?MakeReverse@RString@@QAE_NXZ)
RString.obj : error LNK2019: unresolved external symbol __imp___strupr_s referenced in function "public: bool __thiscall RString::MakeUpper(void)" (?MakeUpper@RString@@QAE_NXZ)
RString.obj : error LNK2019: unresolved external symbol __imp___wcsupr_s referenced in function "public: bool __thiscall RString::MakeUpper(void)" (?MakeUpper@RString@@QAE_NXZ)
RString.obj : error LNK2019: unresolved external symbol __imp___wsetlocale referenced in function "public: bool __thiscall RString::MakeUpper(void)" (?MakeUpper@RString@@QAE_NXZ)
RString.obj : error LNK2019: unresolved external symbol __imp___strlwr_s referenced in function "public: bool __thiscall RString::MakeLower(void)" (?MakeLower@RString@@QAE_NXZ)
RString.obj : error LNK2019: unresolved external symbol __imp___wcslwr_s referenced in function "public: bool __thiscall RString::MakeLower(void)" (?MakeLower@RString@@QAE_NXZ)
RString.obj : error LNK2019: unresolved external symbol __imp__strstr referenced in function "char * __cdecl strstr(char *,char const *)" (?strstr@@YAPADPADPBD@Z)
RString.obj : error LNK2019: unresolved external symbol __imp__wcsstr referenced in function "wchar_t * __cdecl wcsstr(wchar_t *,wchar_t const *)" (?wcsstr@@YAPA_WPA_WPB_W@Z)
RString.obj : error LNK2019: unresolved external symbol __imp__wcscspn referenced in function "public: int __thiscall RString::FindOneOf(wchar_t const *,bool,unsigned int)" (?FindOneOf@RString@@QAEHPB_W_NI@Z)

насколько я понимаю, он просто не может найти нужных версий этих функций для сборки статиком

подскажите, что мне делать, может проект не так настроен?

Спасибо!
--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
Static Linking
    #34637048
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cerebrum wrote:

> написал dll (win32 api, vs 2005 sp1) хочу забацать статической
> библиотекой, но при компиляции выплывают следующие ошибки
1) Насколько я понимаю, dll - Dynamic Linking, *.lib - Static Linking.
Делаем *.lib?
2) Компилируем что? *.lib или проект с ним?
3) Выглядит так, как если бы не была подключена либа, где эти функции были
объявлены. Нужно залезть в справку и посмотреть, какой *.lib файл требуется
для использования этих функций. (насколько я понимаю, это функции
стандартного CRT), потом прописать его либо на вкладке linking, либо (если
правильно помню, для *.lib) - Librarian.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Static Linking
    #34637126
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мне нужна dll + lib к ней, но так чтобы не нужно было за собой таскать всякие стандартные msvcr'ы

и еще вопросик

вот к примеру есть библиотека - dll, в ней есть экспортируемый класс объявленный следующим образом

class __declspec(dllexport) CAnyClass
{....блабла....};

если я пишу программу использующую эту библиотеку, то соответственно я подключаю заголовочные файлы, в которых объявлен этот класс, получается что в этой программе этот класс будет опять объявлен как экспортируемый и экзешник будет нести в себе спец. объявление класса для тех, кто захочет его подцепить, но мне этого не нужно, для этого есть dll. Будет ли правильным создать еще один хедер (копию того самого) с интерфейсом этого класса, но уже без упоминания о необходимости экспорта?
--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
Static Linking
    #34637316
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cerebrumвот к примеру есть библиотека - dll, в ней есть экспортируемый класс объявленный следующим образом

class __declspec(dllexport) CAnyClass
{....блабла....};

если я пишу программу использующую эту библиотеку, то соответственно я подключаю заголовочные файлы, в которых объявлен этот класс, получается что в этой программе этот класс будет опять объявлен как экспортируемый и экзешник будет нести в себе спец. объявление класса для тех, кто захочет его подцепить, но мне этого не нужно, для этого есть dll. Будет ли правильным создать еще один хедер (копию того самого) с интерфейсом этого класса, но уже без упоминания о необходимости экспорта?
да нет, зачем? нужно в хидере написать конструкцию подобную этой:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
#ifdef __DLL__
#define DLL_EI __declspec(dllexport)
#else
#define DLL_EI __declspec(dllimport)
#endif

class DLL_EI CAnyClass
{....блабла....};

...
Рейтинг: 0 / 0
Static Linking
    #34637397
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
понятно, я думал что эта фича только с функциями работает
--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
Static Linking
    #34637398
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cerebrum wrote:

> мне нужна dll + lib к ней, но так чтобы не нужно было за собой таскать
> всякие стандартные msvcr'ы
Тогда надо выставить (не помню где) использование CRT в Multithreaded вместо
Multithreaded DLL. Хотя "таскать MSVCRT" будет экономнее - при таком
раскладе код CRT продублируется и в *.dll и в *.exe.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Static Linking
    #34637412
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErVпри таком
раскладе код CRT продублируется и в *.dll и в *.exe.
Posted via ActualForum NNTP Server 1.4
размер не принципиален, да и не сильно разрастется в релизе, программа должна работать сразу на только что установленной машине
...
Рейтинг: 0 / 0
Static Linking
    #34637463
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cerebrum wrote:

> размер не принципиален, да и не сильно разрастется в релизе, программа
> должна работать сразу на только что установленной машине
Почитай в MSDN статью "Deploying Applications". Там было рассказано, как это
делать. Если не ошибаюсь, надо было манифесты в папку с приложением скинуть
(вместе с *.dll'ками), либо запускать vcredist_x86.exe в случае проблем.
проще всего с Win2k - там схема с манифестами не поддерживается. то есть,
должно работать просто если *.dll'ки в папке с программой.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Static Linking
    #34637522
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErV
Почитай в MSDN статью "Deploying Applications". Там было рассказано, как это
делать. Если не ошибаюсь, надо было манифесты в папку с приложением скинуть
(вместе с *.dll'ками), либо запускать vcredist_x86.exe в случае проблем.
проще всего с Win2k - там схема с манифестами не поддерживается. то есть,
должно работать просто если *.dll'ки в папке с программой.
Posted via ActualForum NNTP Server 1.4
я в курсе насчет этого, спс
...
Рейтинг: 0 / 0
Static Linking
    #34637572
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по первому вопросу:

самое интересное что ругается он только на один класс из нескольких десятков, в котором я использовал, как видно из списка ошибок wchar_t
--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
Static Linking
    #34637632
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для компиляции использую libcmtd.lib
--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Static Linking
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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