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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Перегрузка оператора >> для пользовательского класса String http://www.cyberforum.ru/cpp-beginners/thread1223030.html
Объявление класса: class String { public: //constructor String( const char * = NULL ); //default constructor String( const String& ); //constructor by reference String( const char *, int ); //constructor by number of elements String( const char ); //constructor by string //overload char& operator (int);
C++ Расположить вначале отрицательные, а затем положительные элементы в массиве Помогите пожалуйста. не знаю как сделать его без помощи доп массива. Дан массив целых чисел A(n), n<=400. Разработать программу которая превращает этот массив так, чтобы в начале размещались все отрицательные, а потом все положительные элементы в порядке их наступления в изначальном массиве. Дополнительный массив не использовать. http://www.cyberforum.ru/cpp-beginners/thread1223017.html
C++ Как правильно объявить структуру
Всем доброго времени суток.Есть задача:Составить программу формирования данных об успеваемости студентов по дисциплине: фамилия И.О., 5 оценок по контрольным мероприятиям. Организовать вычисление итоговых оценок: если студент набрал 80% и более от максимально возможного балла – оценка 5, от 60% до 79% – 4; от 40% до 59% -3, менее 40% - 2 Необходимо использовать структуры. Задумка такая: Задаем...
Начертить 100 окружностей случайного диаметра и цвета C++
Написать программу, которая вычерчивает на экране узор из 100 окружностей случайного диаметра и цвета.
C++ Найти максимальное из двух целых чисел http://www.cyberforum.ru/cpp-beginners/thread1223002.html
Написать функцию, которая возвращает максимальное из двух целых чисел, полученных в качестве аргумента.
C++ Вычислить длину введённой с клавиатуры строки Написать программу, которая вычисляет длину введённой с клавиатуры строки. подробнее

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

Код:

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 программа отлично работает, так что дело не в логике кода. Но всё-таки дело в самом коде, ведь с другими программами, созданными в этой же среде разработки проблем нет.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru