Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Заголовочные файлы и связанные с ними файлы dll Windows / 25 сообщений из 26, страница 1 из 2
12.08.2017, 13:54
    #39504366
Arbit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заголовочные файлы и связанные с ними файлы dll Windows
Здравствуйте уважаемые Гуру!
Я не студент и не профи!
Просто балдею от программирования.

Снова нуждаюсь в ваше помощи и совете

Написал приложение Win32 WindowsForm :
Пользовательский интерфейс на С#
Все остальное - С++ в виде DLL
Приложение работает с базой данных SQLite3
Используется пару сторонних dll которые кладу в директорию приложения

Написал простенький инсталлятор приложения на С++,
который создает нужные директории и кладет в них нужные файлы
помещенные в его ресурсы.

Все работает прекрасно НО
Только на компьютере где стоит среда разработки (VS 2013)
На "голой" системе не работает

Подскажите пожалуйста:
1. Какие системные dll мне нужно таскать с приложением чтобы оно работало на любом компьютере
с win XP, Win7, Win8.1, Win10
Как они называются и где расположены

2. Будет ли все это работать если dll
просто положить в директорию с исполняемым файлом приложения (как мои написанные dll ) ?
или их нужно еще и регистрировать в системе?

В приложении я подключаю дополнительно следующие библиотеки:
Код: plaintext
1.
2.
#pragma comment (lib, "urlmon.lib")
#pragma comment(lib, "wbemuuid.lib")



и использую следующие заголовочные файлы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
#include <windows.h>
#include <Wbemidl.h>
#include <Wincrypt.h>
#include <Commdlg.h>
#include <ctime>   
#include <urlmon.h>

#include <string>
#include <vector>
#include <codecvt>
#include <tchar.h>
#include <comdef.h>
#include <algorithm>

#include <fstream>
#include <iostream>
#include <stdio.h>
#include <cstdio>
#include <stdlib.h>
#include <direct.h>
#include <stdarg.h>

#include <fstream>
#include <iostream>
#include <stdio.h>
#include <cstdio>
#include <stdlib.h>
#include <direct.h>
#include <stdarg.h>


Заранее всем благодарен кто найдет немного времении
и поможет мне разобраться с этим вопросом
...
Рейтинг: 0 / 0
12.08.2017, 14:08
    #39504371
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заголовочные файлы и связанные с ними файлы dll Windows
ArbitНа "голой" системе не работает

как ругается?

скорее всего рантайма не хватает ( https://www.microsoft.com/ru-RU/download/details.aspx?id=40784)
можно задать статическую линковку - тогда рантайм с собой таскать не надо.
...
Рейтинг: 0 / 0
12.08.2017, 14:13
    #39504374
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заголовочные файлы и связанные с ними файлы dll Windows
1. Для начала попробуй статическую линковку: для релиза в свойствах проекта С/С++ => Code Generation => Runtime Library поставь Multi-threaded (/MT)
Это ключик заставит компилятор все необходимое из С/С++ включить внутрь твоей DLL. Возможно после этого твоя прога будет запускаться где угодно, а может и нет, если ты используешь еще какие-то третьи DLL, тогда при запуске виндовс просто выдаст окно какую DLL не может загрузить, а ты ее найди на своем компе и просто скопируй к своей DLL.

2. Никаких регистраций не надо, просто скопировать в туже папку.

Под WinXP может не запуститься, не знаю может ли VS 2013 компилировать под XP, одно время компиляция под XP была убрана, в 2015 вернули, может в 2013 есть, я ей не пользовался.
В общем для компиляции под XP в свойствах проекта General => Platform Toolset поставить Visual Studio 2015 - Windows XP (v140_xp) (это в 2015 так).
...
Рейтинг: 0 / 0
12.08.2017, 16:38
    #39504402
Arbit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заголовочные файлы и связанные с ними файлы dll Windows
Изопропил,
К сожалению ссылка оказалась нерабочей... :(

У меня тоже была мысль что Runtime? но я думал что windows имеет ее при установке по умолчанию
А Runtime это относится к Net ?... или к с++
...
Рейтинг: 0 / 0
12.08.2017, 16:48
    #39504404
Arbit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заголовочные файлы и связанные с ними файлы dll Windows
Dima T,1. Для начала попробуй статическую линковку: для релиза в свойствах проекта С/С++ => Code Generation => Runtime Library поставь Multi-threaded (/MT)
У меня стояло Многопоточный DLL (/MD)
Переставил на рекомендованный. Теперь надо проверить на другом компьютере. Сейчас под рукой нет.
А в двух словах популярно можете сказать какой ключ для чего? там всего несколько вариантов. (На будущее)

авторВ общем для компиляции под XP в свойствах проекта General => Platform Toolset поставить Visual Studio 2015 - Windows XP (v140_xp)
У меня есть такой вариант в наборе инструментов для XP
Visual Studio 2013 - Windows XP (v120_xp)

Получается что для XP нужно компилировать отдельную библиотеку?
Или эта компиляция подойдет и для других версий Windows?
...
Рейтинг: 0 / 0
12.08.2017, 16:49
    #39504405
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заголовочные файлы и связанные с ними файлы dll Windows
Arbit,

у компилятора с++ студии на каждую версию свой рантайм,
чем старше студия(по возрасту) - тем вероятнее, что рантайм уже есть в системе
https://www.microsoft.com/ru-RU/download/details.aspx?id=40784
установку рантайма обычно в инсталляторы включают

статически прилинковать как уже советовали - хуже не будет

-----------------------------------
dotnet - это отдельная песня, всё сильно от версии завсисит
...
Рейтинг: 0 / 0
12.08.2017, 16:52
    #39504408
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заголовочные файлы и связанные с ними файлы dll Windows
Dima TПод WinXP может не запуститься, не знаю может ли VS 2013 компилировать под XP, одно время компиляция под XP была убрана, в 2015 вернули, может в 2013 есть, я ей не пользовался.
В общем для компиляции под XP в свойствах проекта General => Platform Toolset поставить Visual Studio 2015 - Windows XP (v140_xp) (это в 2015 так).
Visual Studio 2013 - Windows XP (v120_xp)
Но доверия ко всему этому включая Multi-threaded (/MT) никакого, уж извиняйте.

Dima T, ты еще глянь сколько у него всего "подключено".

Свое решение я озвучивал:
Крайний раз здесь 20709903

Компилируется в VC++2005 (name="Microsoft.VC80.CRT" version="8.0.50727.762")
На XP/2003 гарантом работоспособности является наличие .Net Framework >=2.0 SP1 (не потому что .Net, а потому что ставит этот рантайм), на остальных - по дефолту.
...
Рейтинг: 0 / 0
12.08.2017, 16:57
    #39504410
Arbit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заголовочные файлы и связанные с ними файлы dll Windows
Изопропил,
Меня как-то удивило, что windows тихо молча проигнорировала сохранение данных в базу.
То есть не выдала никаких сообщений и тупо промолчала и данные не добавила.

Для Sqlit я использовал их библиотеку родную и компилировал подключением заголовочного файла. никакого dll файла для SQLite не требовалось все было внутри моей DLL

В процессе написания DLL своей если была ошибка, то просто не исполнялась функция, а
сообщений из dll не было никогда
Может это где-то в настройках проекта у меня не включено?
...
Рейтинг: 0 / 0
12.08.2017, 17:09
    #39504411
Arbit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заголовочные файлы и связанные с ними файлы dll Windows
Изопропил,
По поводу локализации языка при скачивании Runtime
Будет ли иметь значение если на английскую или ивритскую винду попадет
русский runtime?

Или делать различные наборы инсталляций?
...
Рейтинг: 0 / 0
12.08.2017, 20:29
    #39504439
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заголовочные файлы и связанные с ними файлы dll Windows
ArbitDima T,1. Для начала попробуй статическую линковку: для релиза в свойствах проекта С/С++ => Code Generation => Runtime Library поставь Multi-threaded (/MT)
У меня стояло Многопоточный DLL (/MD)
Переставил на рекомендованный. Теперь надо проверить на другом компьютере. Сейчас под рукой нет.
А в двух словах популярно можете сказать какой ключ для чего? там всего несколько вариантов. (На будущее)
/MD использует С++ рантайм, или по-простому DLL в которых классы самого С++ прописаны. /MT вставляет используемые тобой классы С++ внутрь твоей DLL.
C /MT могут быть проблемы в управлении памятью. например одна DLL выделяет память (new) другая освобождает (delete), в таком случае нельзя использовать /MT, но это очень редкий случай. В большинстве случаев /MT проблем не создает.

ArbitавторВ общем для компиляции под XP в свойствах проекта General => Platform Toolset поставить Visual Studio 2015 - Windows XP (v140_xp)
У меня есть такой вариант в наборе инструментов для XP
Visual Studio 2013 - Windows XP (v120_xp)

Получается что для XP нужно компилировать отдельную библиотеку?
Или эта компиляция подойдет и для других версий Windows?
Нет, скомпилируй под XP, в других виндовсах тоже будет работать.
Тут проблема обратной совместимости, в виндовсах после XP добавили много новых WinAPI функций, и если компилировать без оглядки на XP то С++ их вызывает, а при запуске в WinXP их нет, т.е. вызывать нечего, потому в XP не работает.
В общем если надо в т.ч. запуск под XP - выстави Visual Studio 2013 - Windows XP (v120_xp) и будет работать везде от XP до Win10
...
Рейтинг: 0 / 0
12.08.2017, 20:38
    #39504441
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заголовочные файлы и связанные с ними файлы dll Windows
ArbitМеня как-то удивило, что windows тихо молча проигнорировала сохранение данных в базу.
То есть не выдала никаких сообщений и тупо промолчала и данные не добавила.

Для Sqlit я использовал их библиотеку родную и компилировал подключением заголовочного файла. никакого dll файла для SQLite не требовалось все было внутри моей DLL
SQLite это сторонняя библиотека, я с ней не работал, деталей не подскажу. Виндовс тоже не обязан ни о чем предупреждать в данном случае.
Оно работает ровно так как это было задумано ее разработчиками, а если ты не понимаешь как было задумано, то это твоя проблема, а не виндовса. В общем читай документацию на SQLite.
...
Рейтинг: 0 / 0
12.08.2017, 21:14
    #39504451
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заголовочные файлы и связанные с ними файлы dll Windows
Dima TТут проблема обратной совместимости, в виндовсах после XP добавили много новых WinAPI функций, и если компилировать без оглядки на XP то С++ их вызывает, а при запуске в WinXP их нет, т.е. вызывать нечего, потому в XP не работает.
На самом деле новых API после XP "терпимо немного". Ну, и такие вещи отсекаются в коде путем вычисления тек. версии OS в коде.
Правда, как выяснилось могут быть проблемы с неоднозначностью "деклараций" одного и того же в h.файлах в разных SDK, отчего эффект может быть ну оч-чень неприятный.

Но это так, к слову. К вопросу о рантаймах никакого отношения не имеет.

А вот в VB6/.Net этих проблем нет. Задекларировал эту же самую WIN API один раз (ну главное аккуратно это сделать) и пожизненно счастлив. Ни тебе рантаймов, линковок, версий студий, версий SDK. Ну в .Net правда есть понятие "версия .Net Framework", но с этим-то как раз проще бодаться.
...
Рейтинг: 0 / 0
12.08.2017, 21:28
    #39504458
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заголовочные файлы и связанные с ними файлы dll Windows
Дмитрий77Dima TТут проблема обратной совместимости, в виндовсах после XP добавили много новых WinAPI функций, и если компилировать без оглядки на XP то С++ их вызывает, а при запуске в WinXP их нет, т.е. вызывать нечего, потому в XP не работает.
На самом деле новых API после XP "терпимо немного". Ну, и такие вещи отсекаются в коде путем вычисления тек. версии OS в коде.
Правда, как выяснилось могут быть проблемы с неоднозначностью "деклараций" одного и того же в h.файлах в разных SDK, отчего эффект может быть ну оч-чень неприятный.

Но это так, к слову. К вопросу о рантаймах никакого отношения не имеет.

А вот в VB6/.Net этих проблем нет. Задекларировал эту же самую WIN API один раз (ну главное аккуратно это сделать) и пожизненно счастлив. Ни тебе рантаймов, линковок, версий студий, версий SDK. Ну в .Net правда есть понятие "версия .Net Framework", но с этим-то как раз проще бодаться.
Ты много чего не понимаешь и возникшим у тебя проблемам придумываешь неправильные причины. Ну при чем тут .Net если речь о рантайме С++? Это разные вещи.

Не смог ты в VC2013 повторить то что у тебя в VC2005 работает, но это не проблема VC2013, а проблема твоих кривых рук. Не получилось, бывает, некогда разбираться, но не надо другим свою криворукость пропагандировать!

А что касается неработоспособности в XP то первое что вылезет это не найдена WinAPI функция GetTickCount64() , ее нет в XP, а в висте уже есть.
...
Рейтинг: 0 / 0
12.08.2017, 22:08
    #39504472
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заголовочные файлы и связанные с ними файлы dll Windows
Dima TНу при чем тут .Net если речь о рантайме С++? Это разные вещи.
Я в данном случае понимаю о чем говорю и прекрасно понимаю то о чем ты говоришь.
Просто слишком уж много тут "криворуких", которые с этими рантаймами и redistr. packages и не работой на "других системах" мучаются.

А про .Net/VB и API было сказано, ровно то что сказано.
Если я там декларирую Win API, например (первое чего открылось)
Код: vbnet
1.
2.
3.
4.
5.
6.
  Public Declare Function DestroyWindow Lib "user32" (ByVal hwnd As IntPtr) As Boolean
  Public Declare Function GetDesktopWindow Lib "user32" () As IntPtr
  Public Declare Function GetForegroundWindow Lib "user32" () As IntPtr
  Public Declare Function GetParent Lib "user32" (ByVal hwnd As IntPtr) As IntPtr
  Public Declare Function GetWindow Lib "user32" ( _
   ByVal hwnd As IntPtr, ByVal wCmd As Integer) As IntPtr


то у меня это там работает и я это успешно использую вне зависимости от С++ рантаймов, систем и т.п.
(ну естественно если это поддерживается на ЭТОЙ ос)
...
Рейтинг: 0 / 0
12.08.2017, 22:14
    #39504475
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заголовочные файлы и связанные с ними файлы dll Windows
Дмитрий77,

WINAPI функции к рантаймам отношения ни малейшего не имеют
...
Рейтинг: 0 / 0
12.08.2017, 22:36
    #39504477
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заголовочные файлы и связанные с ними файлы dll Windows
Изопропил,

я не говорил что имеют отношение.
просто любая C/C++ прога/dll эти рантаймы цепляет (хоть бы она на одних API писана), а потом из-за этого (из за отсутствия нужного рантайма) в другом месте не работает. И проблема эта не "два пальца.."
...
Рейтинг: 0 / 0
12.08.2017, 22:38
    #39504478
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заголовочные файлы и связанные с ними файлы dll Windows
Дмитрий77,

Тот кто действительно понимает, о чем говорит, не бежит на форум с криками "памагите", "все глючит", etc

Надо внимательно читать документацию по деплою
...
Рейтинг: 0 / 0
12.08.2017, 22:39
    #39504479
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заголовочные файлы и связанные с ними файлы dll Windows
Единственное существенное исключение было, когда МС ввело манифесты
...
Рейтинг: 0 / 0
12.08.2017, 22:42
    #39504481
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заголовочные файлы и связанные с ними файлы dll Windows
Arbit, не забывай пользоваться тегом [ SRC ] при оформлении исходников.
...
Рейтинг: 0 / 0
12.08.2017, 22:49
    #39504483
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заголовочные файлы и связанные с ними файлы dll Windows
SiemarglДмитрий77,
Тот кто действительно понимает, о чем говорит, не бежит на форум с криками "памагите", "все глючит", etc
Надо внимательно читать документацию по деплою
Ну я то с такими "криками" точно не бегу.
Обычно тихо читаю и ваяю себе потихонечку.
...
Рейтинг: 0 / 0
12.08.2017, 23:08
    #39504489
Arbit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заголовочные файлы и связанные с ними файлы dll Windows
Dima T,

Спасибо большое!!!
Перекомпилировал DLL с ключем C /MT после чего она отяжелела на 100 КB
Проверил на пустой системе все сработало великолепно на win10, win8.1, win7
Теперь надо проверить на XP
Проверю - отпишусь.

Очень благодарен всем за помощь!
...
Рейтинг: 0 / 0
12.08.2017, 23:10
    #39504490
Arbit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заголовочные файлы и связанные с ними файлы dll Windows
mayton,Arbit, не забывай пользоваться тегом [ SRC ] при оформлении исходников.
Спасибо за совет!
А можно чуток подробнее, я еще не встречался с этим вопросом...
...
Рейтинг: 0 / 0
12.08.2017, 23:12
    #39504491
Arbit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заголовочные файлы и связанные с ними файлы dll Windows
Все понял о чем речь!!!
Это про оформление исходников на форуме :))
...
Рейтинг: 0 / 0
12.08.2017, 23:18
    #39504493
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заголовочные файлы и связанные с ними файлы dll Windows
ArbitПерекомпилировал DLL с ключем C /MT великолепно на win10, win8.1, win7
С этим в моем случае также проблем не было.
ArbitТеперь надо проверить на XP
Проверю - отпишусь.
Не забудь отписаться.
Мне вот VS2013 тоже больше нравится чем 2005-я, красива-я... Только я как тут было сказано криворукий.
...
Рейтинг: 0 / 0
13.08.2017, 01:01
    #39504502
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заголовочные файлы и связанные с ними файлы dll Windows
Хотя нет, у меня на XP как раз Multi-threaded (/MT) заработало,
но на Win2003 почему-то нет, как предположили там же позже из-за std::string (C++).
20386932
Но, знаете что.
Я м.б. тупой и криворукий, но точно знаю одно:
Я не могу себе позволить роскошь, чтоб что-то где-то почему-то не работало.
И все эти праздные рассуждения про криворукости, что там что-то может быть или не быть, что фишка может лечь или не лечь против этого извините не прокатывает.
Никому не навязываю свою "криворукость", просто делюсь проверенной информацией о том, что надо сделать чтоб точно работало .

А ваше, Dima T, Multi-threaded (/MT) ( при всем моем уважении к вам лично - без подтекста ) извините слово точно не гарантирует, хотя бы по тем причинам, что обсуждались после указанного выше поста 20386932 в той теме.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Заголовочные файлы и связанные с ними файлы dll Windows / 25 сообщений из 26, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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