Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
Developing a game engine
0 / 0 / 0
Регистрация: 25.04.2017
Сообщений: 87
1

Не могу оседлать чужой проект

28.01.2018, 11:06. Показов 3852. Ответов 25
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Никак не могу понять, как правильно компилировать чужие проекты. Ниже вы видите файлы проекта, и среди них мелькает vcxproj, что говорит о том, что это из vs. У меня, увы, нет большого количества трафика на скачивание новой версии, потому юзаю версию 2008 (хотя вообще-то занимаюсь кодингом на билдере, ибо ему не требуется вин8.1). Так вот, файл проекта у меня не открывается. Но даже не в этом дело.
Не могу оседлать чужой проект

Ниже - то, что должно в итоге получиться.
Не могу оседлать чужой проект

А теперь объясните, пожалуйста, идиоту, как из одной компиляции получается и exe и dll. Или компиляции две? И что нужно сделать, чтобы скомпилить проект? Я просто воссоздавал то, что на пером скрине в своём проекте, но в итоге или кидало кучи ошибок, или, когда эти ошибки были исправлены, создавался один exe, который ничего по итогу не делал (это касается не конкретно этого проекта, я взял его для примера из-за его небольшого размера. В папке Release ничего важного нет, а в ValveSDK кучка хедеров. Да, вы наверняка же поняли, что это за проект, и я надеюсь, что не отхвачу бан, ибо это просто частный случай: все проекты не компилируются у меня одинаково, а не только этот)
Сижу с этим уже четвёртый час, верчу и так, и сяк, но ничего не работает. Раскройте, пожалуйста, тайну, как надо работать с многофайлоыми проектами, а то я уже не знаю, что тут делать.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.01.2018, 11:06
Ответы с готовыми решениями:

Не могу установить свой проект на чужой комп
Здравствуйте! У меня VB 6.0, ОС Windows XP. Написал программу, скомпилировал ехе-шник - запустил -...

Не могу оседлать таймер setTimeout
Хочу сделать рекурсивную функцию по смене картинок на странице (одна высвечивается секунд 5, после...

Открыть чужой проект
Например я скачал проэкт Intellij другого человека, хочу его запустить на своем компе. Скачал,...

Как запустить чужой проект?
Добрый день ... хотел скачать и запустить чужой проект, чтобы рассмотреть его функции... но...

25
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
28.01.2018, 13:13 2
Цитата Сообщение от Jodi Redlot Посмотреть сообщение
А теперь объясните, пожалуйста, идиоту, как из одной компиляции получается и exe и dll.
Если проект (в решении) один, то никак не получается.
1
Developing a game engine
0 / 0 / 0
Регистрация: 25.04.2017
Сообщений: 87
28.01.2018, 23:54  [ТС] 3
А как определить, какого типа данный проект? Если dll, то в main должен быть DllMain, а если exe, то WinMain?
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
29.01.2018, 02:21 4
Цитата Сообщение от Jodi Redlot Посмотреть сообщение
А как определить, какого типа данный проект?
Открываешь файл проекта в студии, и смотришь в свойствах проекта.
0
Developing a game engine
0 / 0 / 0
Регистрация: 25.04.2017
Сообщений: 87
29.01.2018, 02:30  [ТС] 5
Ниже вы видите файлы проекта, и среди них мелькает vcxproj, что говорит о том, что это из vs. У меня, увы, нет большого количества трафика на скачивание новой версии, потому юзаю версию 2008 (хотя вообще-то занимаюсь кодингом на билдере, ибо ему не требуется вин8.1). Так вот, файл проекта у меня не открывается
А при портировании проекта на мою версию, я сам задаю тип приложения
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
29.01.2018, 02:33 6
Цитата Сообщение от Jodi Redlot Посмотреть сообщение
Так вот, файл проекта у меня не открывается
Что пишет при этом?
0
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
29.01.2018, 02:34 7
Цитата Сообщение от Jodi Redlot Посмотреть сообщение
как определить, какого типа данный проект?
открываете HackBaseMini.vcxproj в любом текстовом редакторе.
и ищите строчку навроде:
Код
    <ConfigurationType>DynamicLibrary</ConfigurationType>
DynamicLibrary - значит dll
0
Developing a game engine
0 / 0 / 0
Регистрация: 25.04.2017
Сообщений: 87
29.01.2018, 02:48  [ТС] 8
Что пишет при этом?
Что-то про то, что проект создан на версии выше.

Добавлено через 3 минуты
hoggy, спасибо.
Теперь остаётся понять лишь то, как из проекта-dll получается ещё и exe. И если он не из него, то откуда же он...
0
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
29.01.2018, 03:21 9
Цитата Сообщение от Jodi Redlot Посмотреть сообщение
Теперь остаётся понять лишь то, как из проекта-dll получается ещё и exe. И если он не из него, то откуда же он...
есть два типа людей.
первые уже давно бы скинули ссылку на архив с проектом.
и получили ответ уже может быть через несколько минут.

вторые как всегда что то пытаются объяснить на пальцах,
и ждут телепатов.
0
Developing a game engine
0 / 0 / 0
Регистрация: 25.04.2017
Сообщений: 87
29.01.2018, 09:56  [ТС] 10
Я боюсь получить банан за залив этого. Здесь же, по сути, подобное запрещено. Ну раз уж надо - держите
vermilion.rar
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
29.01.2018, 10:36 11
Цитата Сообщение от Jodi Redlot Посмотреть сообщение
И если он не из него
Не из него.
Цитата Сообщение от hoggy Посмотреть сообщение
то откуда же он...
Это у тебя нужно спросить: при чём здесь, вообще, .exe?
0
Developing a game engine
0 / 0 / 0
Регистрация: 25.04.2017
Сообщений: 87
29.01.2018, 10:38  [ТС] 12
nd2, он юзается для инжекта длл, как я понял
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
29.01.2018, 10:40 13
Почему связываешь его создание с этим проектом? Тут проект только для .dll.
1
Developing a game engine
0 / 0 / 0
Регистрация: 25.04.2017
Сообщений: 87
29.01.2018, 10:54  [ТС] 14
nd2, ну, он есть в папке с релизом, вот я и подумал. Хм, наверное, его придётся писать самому. Хотя если порыться на англоязычных форумах, то и его сурс найду. Что же, спасибо за помощь. А почему проект упорно не компилится? В чём может быть причина?
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
29.01.2018, 11:00 15
Цитата Сообщение от Jodi Redlot Посмотреть сообщение
А почему проект упорно не компилится? В чём может быть причина?
Компилятор не сообщает?
0
Developing a game engine
0 / 0 / 0
Регистрация: 25.04.2017
Сообщений: 87
29.01.2018, 11:20  [ТС] 16
nd2, сообщает, к тому же очень много ошибок (да и предупреждений тоже). Мне кажется, что у меня какие-то не те настройки проекта. Мультибайтовую кодировку ставлю, а что еще сделать - не знаю
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
29.01.2018, 11:30 17
Код под 15-ю студию написан (набор инструментов платформы: v140).
1
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
29.01.2018, 11:56 18
Цитата Сообщение от Jodi Redlot Посмотреть сообщение
Я боюсь получить банан за залив этого
если это не краденное ПО, не нарушает ничьих авторских прав и бла бла бла,
если это - материал, необходимый для выполнения задачи - никаких проблем.
так и нужно делать.

глянул.
никаких exe не создается.

вероятно он у вас изначально в выходном каталоге присутствовал.
из исходником собирается только и только dll

зы:
никогда не архивируйте платным rar.
он далеко не всем доступен.
лучше zip, или 7z

ps:
функция: pfnUserMsgHook HookUserMsg(char *szMsgName, pfnUserMsgHook pfn)
(vermilion\src\HackBaseMini\Utils.cpp)

содержит потенциальное UB:
Код
warning C4715: 'HookUserMsg': not all control paths return a value
при ближайшем рассмотрении,
никакого UB вроде бы и нет:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
pfnUserMsgHook HookUserMsg(char *szMsgName, pfnUserMsgHook pfn)
{
    PUserMsg Ptr = nullptr;
    pfnUserMsgHook Original = nullptr;
    Ptr = UserMsgByName(szMsgName);
    if (Ptr->pfn != 0) {
        Original = Ptr->pfn;
        Ptr->pfn = pfn;
        return Original;
    }
    else
    {      //<--- если мы здесь, функция вернет "мусор"
        char Message[256];
        strcpy_s(Message, "ERROR: Couldn't find ");
        strcat_s(Message, szMsgName);
        strcat_s(Message, " message.");
        c_Offset.Error(Message);   // <--- смотрим сюда:
    }
}
на самом деле, в случае фикса ошибки,
функция не вернёт управление наружу.
а значит вроде бы и нет никакого UB:

C++
1
2
3
4
5
void AutoOffset::Error(const PCHAR Msg)
{
    MessageBoxA(0, Msg, "Fatal Error", MB_OK | MB_ICONERROR);
    ExitProcess(0);   //<--- функция уже не вернет управление наружу
}
и тем не менее, предлагаю вам не игнорировать подобные предупреждения.
в чем здесь может быть проблема?

компилятор праве считать, что программист не дурак, и UB-код писать не будет.
а значит в коде никакого UB нет, и быть не может.

а значит ветвь исполнения,
способная спровоцировать UB вызвана быть не может.
а значит проверка условия - лишняя.
и можно оптимизировать.

вместо:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
pfnUserMsgHook HookUserMsg(char *szMsgName, pfnUserMsgHook pfn)
{
    PUserMsg Ptr = nullptr;
    pfnUserMsgHook Original = nullptr;
    Ptr = UserMsgByName(szMsgName);
    if (Ptr->pfn != 0) {
        Original = Ptr->pfn;
        Ptr->pfn = pfn;
        return Original;
    }
    else
    {      //<--- компилятор считает, что сюда попасть мы не можем
                // ведь тогда будет UB
        char Message[256];
        strcpy_s(Message, "ERROR: Couldn't find ");
        strcat_s(Message, szMsgName);
        strcat_s(Message, " message.");
        c_Offset.Error(Message);   // <--- что там внутри он не знает
    }
}
может оптимизировать до:

C++
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
pfnUserMsgHook HookUserMsg(char *szMsgName, pfnUserMsgHook pfn)
{
    PUserMsg Ptr = nullptr;
    pfnUserMsgHook Original = nullptr;
    Ptr = UserMsgByName(szMsgName);
    //if (Ptr->pfn != 0) {   <--- проверка не нужна. или UB
        Original = Ptr->pfn;
        Ptr->pfn = pfn;
        return Original;
    //}
 
#if 0
       // ветвь исполнения, способная спровоцировать UB
       // не должна отработать в well-formed программе
       // а значит - избыточная.
 
    else
    {      //<--- компилятор считает, что сюда попасть мы не можем
                // ведь тогда будет UB
        char Message[256];
        strcpy_s(Message, "ERROR: Couldn't find ");
        strcat_s(Message, szMsgName);
        strcat_s(Message, " message.");
        c_Offset.Error(Message);   // <--- что там внутри он не знает
    }
#endif
}
итого в релизе не один,
так другой компилятор запросто может поиметь на выхлопе:

C++
1
2
3
4
5
6
7
8
9
pfnUserMsgHook HookUserMsg(char *szMsgName, pfnUserMsgHook pfn)
{
    PUserMsg Ptr = nullptr;
    pfnUserMsgHook Original = nullptr;
    Ptr = UserMsgByName(szMsgName);
    Original = Ptr->pfn;
    Ptr->pfn = pfn;
    return Original;
}
зы:
табы в коде - зло.

Добавлено через 2 минуты
Цитата Сообщение от nd2 Посмотреть сообщение
Это у тебя нужно спросить: при чём здесь, вообще, .exe?
вы меня ни с кем не перепутали?

Добавлено через 6 минут
Цитата Сообщение от Jodi Redlot Посмотреть сообщение
почему проект упорно не компилится? В чём может быть причина?
есть два типа людей: балбесы и программисты.

балбесы задают вопрос: "а почему у меня не работает?"
и ждут телепатов.

программисты сразу предоставляют
исходники/выхлоп компилятора/линкера/скриншот/снимок стека-функций/детальное словесное описание,
словом все, что только может помочь другим как можно скорее разобраться с проблемой.

и как показывает опыт:
исходников и выхлоп компилятора/линкера вполне достаточно,
что бы любой более менее продвинуты программист в течении 5 секунд
понял, в чем проблема.

Цитата Сообщение от nd2 Посмотреть сообщение
Компилятор не сообщает?
проект старый, как г. мамонта.
юзает виндузятый мультибайт.

Код
error C2664: 'HMODULE LoadLibraryW(LPCWSTR)': cannot convert argument 1 from 'const char *' to 'LPCWSTR'
нужно выставить набор символов для всех конфигураций:
Use Multi-Byte Character Set
на пятнашке взлетает без проблем.
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
29.01.2018, 12:09 19
Цитата Сообщение от hoggy Посмотреть сообщение
вы меня ни с кем не перепутали?
Так получилось: цитату из цитаты взял, не обратил внимания, что автор цитаты уже не ТС получился Прошу прощения.

Добавлено через 8 минут
Цитата Сообщение от hoggy Посмотреть сообщение
на пятнашке взлетает без проблем.
Там инициализация полей в классах, 8-я студия не соберёт.
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
29.01.2018, 13:55 20
Попробуй с этими файлами (с исправлениями) собрать.
Вложения
Тип файла: rar 1.rar (8.8 Кб, 3 просмотров)
0
29.01.2018, 13:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.01.2018, 13:55
Помогаю со студенческими работами здесь

Не удается открыть чужой проект
Не удается открыть чужой проект написаный в эклипсе. Странно отображется папка с ним. Пытался...

Как запустить чужой проект в Qt ?
Скачал этот проект с github - https://github.com/ValeriyaSyomina/ImitationModelingHospital....

Чужой проект, чужие алгоритмы
Решил я как-то поработать программистом. В мыслях гуляли фантазии, мол ща буду писать свои...

Как запустить чужой проект ?
Дело в том что мне пришлось перенести свой проект с одного компьютера на другой, среду ставил так...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru