Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Устранение зависимостей

16K
30 сентября 2007 года
4nob1oz
34 / / 14.06.2007
Написал приложение на MSVS 2005 но при переносе на другую машину выводит ошибку

"Приложению не удалось запуститься, поскольку оно неправильно настроено. Повторная установка может исправить эту проблему"

Понятное дело что нужно устранить все зависимости и подключить всё нужное. Я как то делал и размер файла с 14kb увеличивался до 54kb и тогда всё начанало работать. Подскажите как решить проблему.

Использовал только winapi и самописные функции, но всё равно не помогает.
240
01 октября 2007 года
aks
2.5K / / 14.07.2006
Ну думается мне что помимо winAPI ты все же юзал и C рантайм. да хотябы те же new/delete. Он и может конфликтовать как раз.
16K
01 октября 2007 года
4nob1oz
34 / / 14.06.2007
Нет приложение было простое

Код:
clude <windows.h>

typedef int (WINAPI* MB) (HWND,LPCTSTR,LPCTSTR,UINT);

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
    MB fMessageBox;
    HMODULE user32_dll = LoadLibraryA("user32.dll");

    if (user32_dll)
    {
        fMessageBox = (MB)GetProcAddress(user32_dll,"MessageBoxA");
        fMessageBox(0, (LPCTSTR)"test", (LPCTSTR)"Сообщение", MB_OK|MB_SETFOREGROUND);
        FreeLibrary(user32_dll);
    }
   

    return 0;
}


Решил проблему уже

Отключаю манифест: Project Property->Linking->Manifest File->Generating Manifest->NO
спасибо Great за совет
Далее выбираю: Project Property->General Configuration->Character Set->Use Multi-byte Character Set это ставлю чтобы не писать (LPCTSTR)"test" а просто "test" в функции
Рантайм библиотеки:Project Property->Configuration properties->c/c++->code generation->runtime library->MT

После компиляции код файл получился размером 45kb
Кое что добавил в код и он после компиляции стал 2kb, а после сжатия WinUPack-ом стал вообще 1kb

Код:
#include <windows.h>

#pragma optimize( "gsy", on )
#pragma comment( linker, "/ENTRY:WinMain" )
#pragma comment( linker, "/MERGE:.rdata=.data" )
#pragma comment( linker, "/MERGE:.text=.data" )
#pragma comment( linker, "/SECTION:.text,EWR" )
#pragma comment( linker, "/SUBSYSTEM:WINDOWS" )
#pragma comment( linker, "/INCREMENTAL:NO" )

typedef int (WINAPI* MB) (HWND,LPCTSTR,LPCTSTR,UINT);

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
    MB fMessageBox;
    HMODULE user32_dll = LoadLibraryA("user32.dll");
   
    if (user32_dll)
    {
        fMessageBox = (MB)GetProcAddress(user32_dll,"MessageBoxA");
    }
   
    fMessageBox(0, "test", "Сообщение", MB_OK|MB_SETFOREGROUND);

    FreeLibrary(user32_dll);

    return 0;
}
5.9K
01 октября 2007 года
Zushenskiy
161 / / 29.06.2006
обрезал проект и справился?!

Такая ошибка выдается в случае несоответствия версий c++ рантайм библиотек, все что нужно было сделать это обновить их на клиентской машине. вот редист для приложений скомпилированных 2005 студией:
x86:
http://www.microsoft.com/downloads/details.aspx?FamilyId=32BC1BEE-A3F9-4C13-9C99-220B62A191EE&displaylang=en
x64:
http://www.microsoft.com/downloads/details.aspx?familyid=90548130-4468-4BBC-9673-D6ACABD5D13B&displaylang=en
16K
01 октября 2007 года
4nob1oz
34 / / 14.06.2007
А если без редистра. Вот стоит голая винда XP Pro SP1 и я что не могу запустить написанное мной приложение чтоли??? На асме то если напишу то всё запустится ведь, а на С++ не могу чтоли?
5.9K
03 октября 2007 года
Zushenskiy
161 / / 29.06.2006
ну тогда путь добрый в эру доса :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог