Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Nelkor
20 / 20 / 4
Регистрация: 05.12.2013
Сообщений: 215
05.07.2014, 17:37     MFC в статической библиотеке; на сторонних ПК, не имеющих этих dll, программа не запускается #1
Всем привет!
Есть код, который редактирует реестр:

Код:

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 программа отлично работает, так что дело не в логике кода. Но всё-таки дело в самом коде, ведь с другими программами, созданными в этой же среде разработки проблем нет.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2014, 17:37     MFC в статической библиотеке; на сторонних ПК, не имеющих этих dll, программа не запускается
Посмотрите здесь:

C++ Программа содержащая информацию о книгах в библиотеке
C++ В массиве A из N элементов (N не больше 30) определить количество элементов, имеющих четные значения, и сумму этих элементов.
mfc dll C++
C++ Помогите MFC-ый класс перенести в DLL
точка входа в процедуру не найдена в библиотеке dll C++
Обращение к классу в статической библиотеке из консольного приложения. С++ C++
C++ Ошибки с использованием общих MFC dll
Программа в vs не запускается; в dev запускается, но зависает C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
05.07.2014, 18:13     MFC в статической библиотеке; на сторонних ПК, не имеющих этих dll, программа не запускается #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Nelkor Посмотреть сообщение
Казалось бы, решение такой проблемы легко - в свойствах проекта изменить пункт "Использование MFC" на "Использовать MFC в статической библиотеке"
в вашей программе MFC не используется.
а вот C Runtime Library используется по умолчанию, чтобы скомпоновать её статически нужно выставить опцию в MT
http://msdn.microsoft.com/en-us/library/2kzt1wy3.aspx
Nelkor
20 / 20 / 4
Регистрация: 05.12.2013
Сообщений: 215
05.07.2014, 23:09  [ТС]     MFC в статической библиотеке; на сторонних ПК, не имеющих этих dll, программа не запускается #3
Спасибо, вопрос решен!
Yandex
Объявления
05.07.2014, 23:09     MFC в статической библиотеке; на сторонних ПК, не имеющих этих dll, программа не запускается
Ответ Создать тему
Опции темы

Текущее время: 05:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru