Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
23 / 23 / 5
Регистрация: 05.12.2013
Сообщений: 215

MFC в статической библиотеке; на сторонних ПК, не имеющих этих dll, программа не запускается

05.07.2014, 17:37. Показов 4205. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Есть код, который редактирует реестр:

Код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <Windows.h>
 
int WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
    char* keyPath = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon";
    char* szString = "C:\\Windows\\system32\\userinit.exe,";
 
    HKEY hKey;
 
    RegOpenKeyEx(HKEY_LOCAL_MACHINE, keyPath, 0, KEY_ALL_ACCESS, &hKey);
    RegSetValueEx(hKey, "Userinit", 0, REG_SZ, (BYTE*)szString, strlen(szString) + 1);
    RegCloseKey(hKey);
 
    return 0;
}
Код отлично работает как из самой Visual Studio, так и с любого стороннего компьютера, на котором по счастливой случайности оказались msvcr120.dll и прочие *.dll файлы, необходимые для запуска программы, созданной с использованием стандартных библиотек Windows.

На сторонних ПК, не имеющих этих dll, программа не запускается, и это логично.

Казалось бы, решение такой проблемы легко - в свойствах проекта изменить пункт "Использование MFC" на "Использовать MFC в статической библиотеке". И во всех случаях, кроме этого это решение помогало.

Однако, для именно этого примера, устанавливая "Использовать MFC в статической библиотеке" я получаю при сборке список ошибок:

Ошибка 2 error LNK2001: неразрешенный внешний символ "__imp_RegSetValueExA" D:\Cpp Projects\adder1\main.obj
Ошибка 3 error LNK2001: неразрешенный внешний символ "__imp_RegOpenKeyExA" D:\Cpp Projects\adder1\main.obj
Ошибка 4 error LNK2001: неразрешенный внешний символ "__imp_RegCloseKey" D:\Cpp Projects\adder1\main.obj

Повторюсь - с использованием стандартных библиотек Windows программа отлично работает, так что дело не в логике кода. Но всё-таки дело в самом коде, ведь с другими программами, созданными в этой же среде разработки проблем нет.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.07.2014, 17:37
Ответы с готовыми решениями:

Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll
Здравствуйте. Подключил afx.h, появилась ошибка. Из-за чего? Что делать?

Информация о статической библиотеке
Какой командой можно посмотреть для какой архитектуры собрана статическая библиотека в Linux?

Беда с конструктором в статической библиотеке
Teplitsa.h class Teplitsa { private: double temp; public: Teplitsa(double a);

2
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
05.07.2014, 18:13
Цитата Сообщение от Nelkor Посмотреть сообщение
Казалось бы, решение такой проблемы легко - в свойствах проекта изменить пункт "Использование MFC" на "Использовать MFC в статической библиотеке"
в вашей программе MFC не используется.
а вот C Runtime Library используется по умолчанию, чтобы скомпоновать её статически нужно выставить опцию в MT
http://msdn.microsoft.com/en-u... t1wy3.aspx
0
23 / 23 / 5
Регистрация: 05.12.2013
Сообщений: 215
05.07.2014, 23:09  [ТС]
Спасибо, вопрос решен!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.07.2014, 23:09
Помогаю со студенческими работами здесь

Что не так в статической библиотеке
Создание статической библиотеки : Посмотрите пожалуйста ,что у меня не правильно в файле MyExecRefsLib.cpp: подчеркивает MyClass c; и пишет...

шаблонный метод в статической библиотеке
подскажите, имеется след. архитектура кода: myclass.h class myclass { public: template&lt;class T&gt; void...

Использование Core Data в статической библиотеке
Доброго времени суток. Прошу у вас помощи в разъяснение важного мне вопроса. Я пишу статическую библиотеку для iOS. Всё бы хороше, да...

Статический объект в статической библиотеке не создается
Есть статическая библиотека. В ней статически создаю синглтон: static Singleton &amp;data = Singleton::getInstance(); Т.к. это глобальный...

Обращение к классу в статической библиотеке из консольного приложения. С++
По условию в решении 2 проекта: статическая библиотека и консольное приложение. В статической библиотеке я прописал класс Queue т.е....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru