On-line: Мирослав, гостей 0. Всего: 1 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 6110
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.11.18 18:42. Заголовок: МиниГуи и MS VC 2017


gfilatov2002 пишет:

 цитата:
Без проблем - это ведь тестовые сборки для любопытных


1) А чем эти тестовые отличаются от рабочих ?

Можно ли сразу делать каталоги типа такими
C:\MiniGui - BCC
C:\MiniGuiVC - 32бит
C:\MiniGuiVC64 - 64бит
2) Чтобы все батники были уже настроены на такие пути ?

3) Какой(откуда) компилятор нужно поставить, чтобы было такое короткое имя C:\VC2017 ?

Для компиляции своего проекта сделал build_vc1764.bat:
chcp 1251
call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86_amd64
call ..\..\buildapp.bat Tsb_export-vc1764.hbp
pause


Не собирает, выдаёт ошибку:
hbmk2: Triggered by #require directive: hbxlsxml.hbc
hbmk2[demo-vc17]: Warning: Cannot find hbxlsxml.hbc
hbmk2: Compiling resources...
Microsoft (R) Windows (R) Resource Compiler Version 10.0.10011.16384

Copyright (C) Microsoft Corporation. All rights reserved.

hbmk2: Linking... Tsb_export985vc1764.exe
LINK : fatal error LNK1181: [всякие сердечки] "hbxlsxml.lib"
hbmk2[demo-vc1764]: Error: Running linker. 1181
link.exe @C:\Users\artyo\AppData\Local\Temp\1zabcl.lnk

Я так понял что библиотеки нет в этой поставки МиниГуи.
4) Можно ли её собрать и сразу в поставку включить ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 11 [только новые]


moderator




Пост N: 1394
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 05.11.18 21:57. Заголовок: Andrey пишет: А чем..


Andrey пишет:

 цитата:
А чем эти тестовые отличаются от рабочих ?


Тем, что не все библиотеки из основной сборки были портированы и испытаны (только базовые, без которых не соберется пример MAINDEMO).

Andrey пишет:

 цитата:
Чтобы все батники были уже настроены на такие пути ?


ЭТО НАДО СДЕЛАТЬ САМОСТОЯТЕЛЬНО С ПРИВЯЗКОЙ к своему программному окружению.

Andrey пишет:

 цитата:
Какой(откуда) компилятор нужно поставить



Си-компилятор VC 2017 брал на сайте http://whosaway.com

Это - урезанная версия, которая работает только из командной строки, подобно BCC 5.5

Andrey пишет:

 цитата:
Можно ли её собрать и сразу в поставку включить ?


Да, конечно.
А сейчас это нужно сделать самому, все исходники есть в основной сборке.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6111
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.11.18 22:36. Заголовок: Бьюс уже который час..


Бьюс уже который час со сборкой бесплатного Visual Studio 2017
Качал здесь - https://visualstudio.microsoft.com/ru/downloads/?rr=https%3A%2F%2Fwww.google.ru%2F
Делаю путь к своей установке на компе:
@echo off
chcp 65001
call "D:\Program Files\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat"
rem call ..\..\buildapp.bat Tsb_composite.hbp - можно переделать под запуск из под Far

set PROJ=Tsb_composite.hbp
set OLDPATH=%PATH%
set HMGPATH=C:\MiniGUIVC
SET PATH=%HMGPATH%\harbour\bin;%PATH%

echo #define HMGRPATH %HMGPATH%\RESOURCES > _hmg_resconfig.h
COPY /b %HMGPATH%\resources\minigui.rc+%PROJ%.rc+%HMGPATH%\resources\filler _temp.rc >>NUL

hbmk2 %PROJ% %2 %3 %4 %5 %6 %7 %8 %HMGPATH%\minigui.hbc -D__CALLDLL__ -q -warn=low -run >build.log 2>&1

del _hmg_resconfig.h
del _temp.*

set HMGPATH=
set PATH=%OLDPATH%

Победил, пример собирается, но что-то не нравиться в ресурсах.

Выдаёт вот такую ошибку:
hbmk2: Linker command:
link.exe @C:\Users\Andrey\AppData\Local\Temp\sr02u6.lnk
hbmk2: Linker script:
-nologo -out:Tsb_composite.exe OBJ\1main.obj OBJ\Form_Tsbrowse.obj OBJ\Form_About.obj OBJ\Form_SelLang.obj OBJ\Form_SelDbf.obj OBJ\Form_SelDim.obj OBJ\Form_SetField.obj OBJ\util_Use.obj OBJ\util_Tsbrowse.obj OBJ\Form_Menu.obj OBJ\form_2TsbMenu.obj OBJ\Run_Table.obj OBJ\util_fonts.obj OBJ\util_InfoDbf.obj OBJ\util_OleXls.obj OBJ\WaitThreadIco.obj OBJ\_hbmkaut_1main.obj -libpath:C:\MiniGUIVC\harbour\lib\win\msvc -libpath:C:\MiniGUIVC\lib -subsystem:windows minigui.lib tsbrowse.lib hbprinter.lib miniprint2.lib adordd.lib calldll.lib hbct.lib hbtip.lib hbvpdf.lib hbmisc.lib hbziparc.lib hbmzip.lib minizip.lib hbwin.lib xhb.lib msvfw32.lib vfw32.lib hbextern.lib hbdebug.lib hbvmmt.lib hbrtl.lib hblang.lib hbcpage.lib gtcgi.lib gtpca.lib gtstd.lib gtwin.lib gtwvt.lib gtgui.lib hbrdd.lib hbuddall.lib hbusrrdd.lib rddntx.lib rddcdx.lib rddnsx.lib rddfpt.lib hbrdd.lib hbhsx.lib hbsix.lib hbmacro.lib hbcplr.lib hbpp.lib hbcommon.lib kernel32.lib user32.lib gdi32.lib advapi32.lib ws2_32.lib iphlpapi.lib winspool.lib comctl32.lib comdlg32.lib shell32.lib uuid.lib ole32.lib oleaut32.lib mpr.lib winmm.lib mapi32.lib imm32.lib msimg32.lib wininet.lib hbpcre.lib hbzlib.lib OBJ\Tsb_composite.res OBJ\_temp.res
CVTRES : fatal error CVT1100: повторяющийся ресурс. тип: ICON, имя: 4, язык: 0x0409
LINK : fatal error LNK1123: сбой при преобразовании в COFF: файл недопустим или поврежден
hbmk2[Tsb_composite]: Error: Running linker. 1123
link.exe @C:\Users\Andrey\AppData\Local\Temp\sr02u6.lnk


Что и где нужно править ?
Нашел в инете для CVTRES : fatal error CVT1100: повторяющийся ресурс. тип: ICON, имя: 4, язык: 0x0409
1) http://qaru.site/questions/10407466/fatal-error-cvt1100-duplicate-resource-typeicon-name1-c-visual-studio-c-2010
2) https://msdn.microsoft.com/ru-ru/library/3k67zd6z.aspx

Для LINK : fatal error LNK1123: сбой при преобразовании в COFF: файл недопустим или поврежден
1) https://msdn.microsoft.com/ru-ru/library/7dz62kfh.aspx

P.S. Проект C:\MiniGuiVC\Samples\TsBrowse\demo - собирается нормально !
Проблема в проекте Tsb_composite

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1395
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 05.11.18 23:15. Заголовок: Andrey пишет: повто..


Andrey пишет:

 цитата:
повторяющийся ресурс. тип: ICON


По-видимому, нужно оставить только одну иконку
MSGINFO ICON res\2MiniGuiDbf.ico

или

2MAIN_ICO ICON res\2MiniGuiDbf.ico

которые действительно продублированы

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6112
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.11.18 23:49. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
По-видимому, нужно оставить только одну иконку



Переделал вообще этот Tsb_composite.rc:
// Using a resource file like this, you can include bitmaps, icons and sounds 
// inside EXE.
//
// Resource Resource Resource
// Name Type FileName
//
A1MAIN_ICO ICON res\a1MiniGui.ico
// ------ 1main.prg
iExit48x1 ICON res\iExit48x1.ico
iExit48x2 ICON res\iExit48x2.ico
iAbout48x1 ICON res\iAbout48x1.ico
iAbout48x2 ICON res\iAbout48x2.ico
iCancel48x1 ICON res\iCancel48x1.ico
iCancel48x2 ICON res\iCancel48x2.ico
iOk48x1 ICON res\iOk48x1.ico
iOk48x2 ICON res\iOk48x2.ico
// ------- Form_Tsbrowse.prg
A2MAIN_ICO ICON res\a2MiniGuiDbf.ico
iExit32x1 ICON res\iExit32x1.ico
iExit32x2 ICON res\iExit32x2.ico
.....

Убрал у него внизу
1 VERSIONINFO 
FILEVERSION 1,0


Все равно не собирается.... Почему ?

P.S. Проект C:\MiniGuiVC\Samples\TsBrowse\demo - собирается нормально !

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6113
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.11.18 00:09. Заголовок: Сделал ещё меньше ре..


Сделал ещё меньше ресурсов, оставил всего несколько строк:
// Using a resource file like this, you can include bitmaps, icons and sounds 
// inside EXE.
//
// Resource name Resource Type Resource FileName
//
MAIL32 BITMAP res\Mail32.bmp
Print32 BITMAP res\Print32.bmp
Recno32 BITMAP res\Recno32.bmp
CheckF28 BITMAP res\check_circle_false28x2.bmp
CheckT28r BITMAP res\check_circle_true28red.bmp
Floppy32 BITMAP res\Floppy32.bmp
Mail38 BITMAP res\Mail38.bmp
Print42 BITMAP res\Print42.bmp
Table62 BITMAP res\Table61.bmp
FLAG_EN BITMAP res\flag_en.bmp
FLAG_KZN BITMAP res\flag_kaz.bmp
FLAG_RU BITMAP res\flag_ru.bmp
FLAG_UK BITMAP res\flag_ua2.bmp
FLAG_BYR BITMAP res\flag_bel.bmp
bDelRed24 BITMAP res\bDelRed24.bmp
bSeach24 BITMAP res\bSeach24x.bmp
bNoSeach24 BITMAP res\bNoSeach24x.bmp

Теперь эти ресурсы подсоединяются в _temp.rc (до этого не соединялись), но теперь другая ошибка:
CVTRES : fatal error CVT1100: duplicate resource. type:BITMAP, name:MAIL32, language:0x0409
LINK : fatal error LNK1123: сбой при преобразовании в COFF: файл недопустим или поврежден
hbmk2[Tsb_composite]: Error: Running linker. 1123

Блин, и как теперь собирать ? Что то ломается при линковке ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6114
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.11.18 07:53. Заголовок: Разобрался я со сбор..


Разобрался я со сборкой под MSVC.
Ехе-ник собираю, но фиговина получается....

1) Если в папке проекта нет *.hbp - то ехе-ник соберётся.
2) Если в папке проекта есть *.hbp, но в нём нет строк
# project Resources 
xxxxxxx.rc
yyyyyyy.rc

То тоже будет счастье - ехе-ник соберётся.

3) Если в папке проекта есть *.hbp и перечень хоть одного .rc
то дело труба - ехе-ник НЕ соберётся !!!
Будут такие ошибки:
CVTRES : fatal error CVT1100: повторяющийся ресурс. тип: ICON, имя: 4, язык: 0x0409
CVTRES : fatal error CVT1100: duplicate resource. type:BITMAP, name:MAIL32, language:0x0409
LINK : fatal error LNK1123: сбой при преобразовании в COFF: файл недопустим или поврежден


Блин MSVC линковщик тупее BCC, ему нужно только один супер-RC-файл, содержащий все .RC-файлы проекта.
Приплыли...
Теперь понятна мне ситуация, почему не собирается мой проект Tsb_composite.hbp
hbmk2.exe компилирует ресурсы Tsb_composite.rc, а потом _temp.rc повторно с
одинаковыми индефикаторами.
http://qaru.site/questions/10407466/fatal-error-cvt1100-duplicate-resource-typeicon-name1-c-visual-studio-c-2010
Почитайте, очень интересное чтиво !
См. Ниже объяснение от Microsoft:
Гэри Чанг опубликовал это интересное объяснение в другом месте в сети:
......
Таким образом, с текущим компилятором VC++, единственное, что можно сделать в этом случае,
если вы хотите иметь несколько файлов ресурсов, - сохранить все ресурсы значков (и курсора)
в одном файле .rc. Это позволит редактору ресурсов VC сохранить уникальные идентификаторы RT_ICON.

Пожелайте, чтобы это помогло и спасибо за ваше понимание! С наилучшими пожеланиями,
Гэри Чанг Поддержка сообщества Microsoft


Блин уже 2019 год на носу, а они только с одним .rc файлом работают до сих пор...

В случае с BCC 5.5.1 происходит по другому.
Ему без разницы сколько в *.hbp перечисленно .rc-файлов,
BCC или hbmk2.exe (я не знаю) берет ВСЕ файлы *.rc из папки проекта и
преобразует их в *.res и далее в командной строке их перечисляет, для сборки.
Отличное решение !

Как бы и VC заставить это сделать ?
У меня в проекте 27 файлов *.rc - это из-за того что BCC не может собирать большие ресурсы,
пришлось их бить на части.

Мне знакомый С-ник подсказал решение, можно создать all.rc файл и в нём перечислить
все .rc файлы проекта, включая и _temp.rc
1) Может можно как то сделать автоматом перечисление всех .rc в _temp.rc ?
Это вопрос к Григорию ! Кто знает как - подскажите.
2) Как можно запретить hbmk2.exe обрабатывать случайно написанные в My.hbp *.rc ?
# project Resources 
xxxxxxx.rc
yyyyyyy.rc

Ну бывает, проглядел сборку ресурсов программист...

3) Нужно убрать ошибку при сборке (если есть свои данные в *.rc-файле) :
CVTRES : fatal error CVT1100: duplicate resource. type:VERSION, name:1, language:0x0409
Т.е. в файле minigui.rc есть строка VS_VERSION_INFO VERSIONINFO
и в моём *.rc-файле тоже есть такое же описание. Конфликт интересов...

Мне предложили такое решение:
#include <winver.h> 

#ifndef __VERSION_INFO
VS_VERSION_INFO VERSIONINFO
FILEVERSION MG_VER_FILE
PRODUCTVERSION MG_VER_PROD
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
FILEFLAGS 0
FILEOS VOS__WINDOWS32
FILETYPE VFT_APP
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904B0" /* LANGUAGE: US English (0x0409), ENCODING: Unicode (1200/0x04B0) */
BEGIN
VALUE "Comments", "See LICENSE.txt for licensing terms." "\0"
VALUE "CompanyName", MG_NAME "\0"
VALUE "FileDescription", MG_NAME "\0"
VALUE "FileVersion", MG_VER_FILE_STR "\0"
VALUE "LegalCopyright", "Copyright ? 2005-2017 MiniGUI Team" "\0"
VALUE "ProductName", MG_NAME "\0"
VALUE "ProductVersion", MG_VER_PROD_STR "\0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x0409, 0x04B0 /* LANGUAGE: US English (0x0409), ENCODING: Unicode (1200/0x04B0) */
END
END
#endif


А в своём одном .rc файле (можно специально обозначить - version.rc) писать так:
#define __VERSION_INFO 

1 VERSIONINFO
FILEVERSION 1,0
PRODUCTVERSION 1,0
FILEOS 0x4
FILETYPE 0x1
........

4) Как убрать ошибку при сборке, если .rc-файл не оканчивается пустой строкой ?
Т.е. в конце файла должно быть всегда CRLF
Ошибка вот такая:
C:\MiniGuiVC\...\Demo.rc(25) : fatal error RC1004: unexpected end of file found


Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1396
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 06.11.18 13:39. Заголовок: Andrey пишет: Как м..


Andrey пишет:

 цитата:
Как можно запретить hbmk2.exe обрабатывать случайно написанные в My.hbp *.rc ?


Только если убрать из файла minigui.hbc строку

 цитата:
sources=${hb_curdir}_temp.rc

но тогда ресурсы вообще не будут включены в приложение

Andrey пишет:

 цитата:
Как убрать ошибку при сборке, если .rc-файл не оканчивается пустой строкой ?


Для этой цели предназначен пустой файл filler, который лежит в папке resources
и копируется по следующей команде в батнике

 цитата:
COPY /b %HMGPATH%\resources\minigui.rc+%1.rc+%HMGPATH%\resources\filler _temp.rc



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6115
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.11.18 14:10. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Для этой цели предназначен пустой файл filler, который лежит в папке resources
и копируется по следующей команде в батнике


Туда (в файлы сборки) тогда нужно добавить это изменение.
Я не понял для чего это было. Сейчас понял.

gfilatov2002 пишет:

 цитата:
Только если убрать из файла minigui.hbc строку


Очень жалко... Теперь бы не забывать отказаться от перечня ресурсов в .hbp файле....

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6146
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.12.18 19:05. Заголовок: Собираю маленький пр..


Собираю маленький пример для показа работы с C#.
В папке сделал два батника:
build_bcc.bat (call C:\MiniGUI\BATCH\hbmk2 demo-bcc)
build_msvc.bat (call C:\MiniGuiVC\buildapp.bat demo-msvc)

и два проекта:
demo-bcc.hbp
demo-msvc.hbp

Для BCC ехеник собирается нормально, для VC2017 тоже собирается, но БЕЗ ресурсов (иконок, картинок нет) !

Сам проект и ресурсный файл:
demo.prg
Demo.rc


Т.е. buildapp.bat требует обозвать ресурсный файл demo-msvc.rc:
COPY /b %HMGPATH%\resources\minigui.rc+%1.rc+%HMGPATH%\resources\filler _temp.rc >>NUL

А если в проекте несколько .rc ? Тогда вообще нельзя будет такого делать ?

Я же предлагал ранее такое решение:
echo ------- resource assembly ---------
echo #define HMGRPATH %HMGPATH%\RESOURCES > _hmg_resconfig.h
type nul > _temp.rc
for %%f in (*.rc) do (
if /i "%%f" NEQ "_temp.rc" (
echo #include "%%f" >> _temp.rc
)
)
echo #include "%HMGPATH%\resources\minigui.rc" >> _temp.rc

Странно, что в новой версии его не применили....

Добавляю в проект файл demo-msvc.rc вот такого содержания:
// Resource    Resource         Resource 
// Name Type FileName
//
1MAIN_ICO ICON res\MiniGui48.ico
Csharp48 ICON res\Csharp48.ico

#define __VERSION_INFO

1 VERSIONINFO
FILEVERSION 1,0
PRODUCTVERSION 1,0
FILEOS 0x4
FILETYPE 0x1
{
BLOCK "StringFileInfo"
{
BLOCK "040904b0"
{
VALUE "FileDescription", "MiniGui Harbour C#\000"
VALUE "FileVersion", "1.0."
VALUE "InternalName", "demo.exe\000"
VALUE "LegalCopyright", "(c) Copyright 2018 Verchenko Andrey (Dmitrov)\000"
VALUE "LegalTrademarks", "Charp + Harbour + MiniGui\000"
VALUE "OriginalFilename", "demo.exe\000"
VALUE "CompanyName", "V-Soft Dmitrov, Moscow region\000"
VALUE "ProductName", "MiniGui + C#\000"
VALUE "ProductVersion", "1.0."
VALUE "Comments", "Created by Verchenko Andrey <verchenkoag@gmail.com>\000"
}
}

BLOCK "VarFileInfo"
{
VALUE "Translation", 0x0409 0x04B0
}
}

Exe-ник перестаёт собиратся и выдаёт такую ошибку:
hbmk2: Compiling resources...
Microsoft (R) Windows (R) Resource Compiler Version 6.1.7600.16385
Copyright (C) Microsoft Corporation. All rights reserved.
C:\VC2017\INCLUDE\sal.h(2886) : warning RC4005: '__useHeader' : redefinition
C:\VC2017\INCLUDE\sal.h(2896) : warning RC4005: '__on_failure' : redefinition
hbmk2: Linking... demo_msvc.exe
CVTRES : fatal error CVT1100: duplicate resource. type:VERSION, name:1, language:0x0409
LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
hbmk2[demo-msvc]: Error: Running linker. 1123
link.exe @C:\Users\Andrey\AppData\Local\Temp\shaqnr.lnk


Т.е. НЕЛЬЗЯ использовать свои VERSIONINFO, "FileDescription", "FileVersion" и т.д.
В подписи ехе-ника будет стоять только то что написано в %HMGPATH%\resources\minigui.rc
Дискриминация по языковому признаку !!! шучу, я !

В Пост N: 6114 описано как можно обойти это ограничение.

Григорий, отправил тебе проект на почту.

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1406
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 08.12.18 22:38. Заголовок: Andrey пишет: В Пос..


Andrey пишет:

 цитата:
В Пост N: 6114 описано как можно обойти это ограничение.


Обновил архив MSVC-сборки с учетом этих (и всех последних) изменений (путь и имя архива остались прежние).

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6147
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.12.18 23:04. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Обновил архив MSVC-сборки с учетом этих (и всех последних) изменений (путь и имя архива остались прежние).


Спасибо БОЛЬШОЕ !

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 503
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет