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

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

Написал приложение 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
Заголовочные файлы и связанные с ними файлы dll Windows
    #39504371
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArbitНа "голой" системе не работает

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

скорее всего рантайма не хватает ( https://www.microsoft.com/ru-RU/download/details.aspx?id=40784)
можно задать статическую линковку - тогда рантайм с собой таскать не надо.
...
Рейтинг: 0 / 0
Заголовочные файлы и связанные с ними файлы dll Windows
    #39504374
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Заголовочные файлы и связанные с ними файлы dll Windows
    #39504402
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропил,
К сожалению ссылка оказалась нерабочей... :(

У меня тоже была мысль что Runtime? но я думал что windows имеет ее при установке по умолчанию
А Runtime это относится к Net ?... или к с++
...
Рейтинг: 0 / 0
Заголовочные файлы и связанные с ними файлы dll Windows
    #39504404
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Заголовочные файлы и связанные с ними файлы dll Windows
    #39504405
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arbit,

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

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

-----------------------------------
dotnet - это отдельная песня, всё сильно от версии завсисит
...
Рейтинг: 0 / 0
Заголовочные файлы и связанные с ними файлы dll Windows
    #39504408
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Заголовочные файлы и связанные с ними файлы dll Windows
    #39504410
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропил,
Меня как-то удивило, что windows тихо молча проигнорировала сохранение данных в базу.
То есть не выдала никаких сообщений и тупо промолчала и данные не добавила.

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

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

Или делать различные наборы инсталляций?
...
Рейтинг: 0 / 0
Заголовочные файлы и связанные с ними файлы dll Windows
    #39504439
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Заголовочные файлы и связанные с ними файлы dll Windows
    #39504441
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArbitМеня как-то удивило, что windows тихо молча проигнорировала сохранение данных в базу.
То есть не выдала никаких сообщений и тупо промолчала и данные не добавила.

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

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

А вот в VB6/.Net этих проблем нет. Задекларировал эту же самую WIN API один раз (ну главное аккуратно это сделать) и пожизненно счастлив. Ни тебе рантаймов, линковок, версий студий, версий SDK. Ну в .Net правда есть понятие "версия .Net Framework", но с этим-то как раз проще бодаться.
...
Рейтинг: 0 / 0
Заголовочные файлы и связанные с ними файлы dll Windows
    #39504458
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий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
Заголовочные файлы и связанные с ними файлы dll Windows
    #39504472
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Заголовочные файлы и связанные с ними файлы dll Windows
    #39504475
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

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

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

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

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

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

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

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


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