win32 · Шаг 4. Фаза 2 — сборка вьюверов (3 программы)
На этом шаге собираются три программы‑вьювера под 32 бита. Все они — MFC‑приложения (статическая MFC, набор символов MultiByte) и линкуются с библиотеками sfile95, complex, exprint.
Перед сборкой Фазы 2 убедитесь, что все 6 библиотек из Фазы 1 лежат в
dist\win32\lib(см.03-build-libs.md, раздел 3.8).Перед сборкой: конфигурация Release, платформа Win32.
4.0 Что уже сделано в проектах вьюверов
Правки настроек сборки (.vcxproj/.sln), не код:
- Старые
.vcproj(формат VS2008) заменены на новые.vcxproj(toolset v145). - Подключён
build\ExeOutput.props(вывод.exeвdist\<платформа>\bin). - Убраны жёсткие пути
D:\work,c:\tmc.
Правка runtime‑бага вьюверов (Баг #5) — уже внесена в код. Без неё все три вьювера
при запуске показывали ошибку MFC «Encountered an improper argument». Подробности —
в 07-troubleshooting.md. Кратко, что изменено в коде каждого вьювера:
- в
MakeDocFileNameвызовыSetPathName(...)дополнены вторым аргументомFALSE(SetPathName(GetTitle(), FALSE)иSetPathName(ch1, FALSE)); - в
InitInstanceдобавленыAfxOleInit();иSetRegistryKey("<имя_программы>"); - в
StdAfx.hдобавлен#include <afxdisp.h>.
Эти правки не зависят от разрядности (нужны и для win32, и для win64).
4.1 Общая последовательность для каждого вьювера
- File → Open → Project/Solution… и выбрать файл проекта
.vcxprojвьювера из его папки (точное имя — в разделах 4.2–4.4 ниже).
НЕ открывайте
TMCGROUT.SLN. В папке каждого вьювера лежит старое решениеTMCGROUT.SLN(формат VS2008), и оно ссылается на устаревшийTMCGROUT.vcprojс жёсткими путями. Если открыть.SLN, вы увидите проект «TMCGROUT» (а не TMCROS/TMC_DN) и соберёте старый проект. Новые, уже настроенные проекты названы по-разному:TMCROS.vcxproj,TMCGROUT.vcxproj,TMC_DN.vcxproj— открывайте именно их. 2. Проверить: конфигурация Release, платформа Win32. 3. Проверить, что в линковке указаны библиотеки (см. ниже). 4. Build → Build Solution (или Rebuild Solution для чистой сборки). 5. ДождатьсяBuild: succeeded. 6. Убедиться, что.exeпоявился вdist\win32\bin.
Как проверить список библиотек линковки
Правой кнопкой по проекту → Properties → Linker → Input → Additional Dependencies (Компоновщик → Ввод → Дополнительные зависимости). Должны быть перечислены:
sfile95.lib
complex.lib
exprint.lib

4.2 TMCROS.exe — вьювер временных сигналов
- Папка:
src\viewers\Tmcrtout - Проект (открывать этот файл):
TMCROS.vcxproj - Результат:
dist\win32\bin\TMCROS.exe - Линковка: sfile95.lib, complex.lib, exprint.lib
4.3 TMCGROUT.exe — вьювер матриц рассеяния
- Папка:
src\viewers\Tmcgrout - Проект (открывать этот файл):
TMCGROUT.vcxproj - Результат:
dist\win32\bin\TMCGROUT.exe - Линковка: sfile95.lib, complex.lib, exprint.lib
4.4 TMC_DN.exe — вьювер диаграмм направленностей
- Папка:
src\viewers\DiaNapGr - Проект (открывать этот файл):
TMC_DN.vcxproj - Результат:
dist\win32\bin\TMC_DN.exe - Линковка: sfile95.lib, complex.lib, exprint.lib
Этот вьювер использует вычислительные модули
c2DArrayиcIzlиз соседней папкиsrc\viewers\DiaNapr. Они компилируются вместе с проектом (общий предкомпилированный заголовок). Никаких дополнительных действий не требуется.
4.5 Проверка Фазы 2
Откройте <КОРЕНЬ>\dist\win32\bin. Должны лежать три файла:
TMCROS.exe
TMCGROUT.exe
TMC_DN.exe
Запустите каждый — должно открыться окно программы без ошибки «Encountered an
improper argument». Для проверки открытия файла используйте тестовые данные из
samples\SAMPLE_R (например, horns.soc).
Если всё в порядке — переходите к 05-build-kernels.md (Фаза 3 — ядра).
win32 · Step 4. Phase 2 — building the viewers (3 programs)
In this step three viewer programs are built for 32 bits. They are all MFC applications (static MFC, MultiByte character set) and link against the libraries sfile95, complex, exprint.
Before building Phase 2, make sure that all 6 libraries from Phase 1 are in
dist\win32\lib(see03-build-libs.md, section 3.8).Before building: configuration Release, platform Win32.
4.0 What has already been done in the viewer projects
Build-settings changes (.vcxproj/.sln), not code:
- The old
.vcprojfiles (VS2008 format) were replaced with new.vcxproj(toolset v145). build\ExeOutput.propsis attached (.exeoutput todist\<platform>\bin).- Hard paths
D:\work,c:\tmcwere removed.
A fix for a viewer runtime bug (Bug #5) — already applied in the code. Without it, all
three viewers showed the MFC error "Encountered an improper argument" at startup. Details
in 07-troubleshooting.md. Briefly, what was changed in each viewer's code:
- in
MakeDocFileNametheSetPathName(...)calls were given a second argumentFALSE(SetPathName(GetTitle(), FALSE)andSetPathName(ch1, FALSE)); - in
InitInstance,AfxOleInit();andSetRegistryKey("<program name>")were added; - in
StdAfx.h,#include <afxdisp.h>was added.
These changes are bitness-independent (needed for both win32 and win64).
4.1 The common sequence for each viewer
- File -> Open -> Project/Solution… and select the viewer's
.vcxprojproject file from its folder (the exact name is in sections 4.2–4.4 below).
Do NOT open
TMCGROUT.SLN. In each viewer folder there is an old solutionTMCGROUT.SLN(VS2008 format), and it references the obsoleteTMCGROUT.vcprojwith hard paths. If you open the.SLN, you will see the "TMCGROUT" project (not TMCROS/TMC_DN) and build the old project. The new, already configured projects have different names:TMCROS.vcxproj,TMCGROUT.vcxproj,TMC_DN.vcxproj— open exactly those. 2. Check: configuration Release, platform Win32. 3. Check that the link libraries are specified (see below). 4. Build -> Build Solution (or Rebuild Solution for a clean build). 5. Wait forBuild: succeeded. 6. Make sure the.exeappeared indist\win32\bin.
How to check the list of link libraries
Right-click the project -> Properties -> Linker -> Input -> Additional Dependencies. The following must be listed:
sfile95.lib
complex.lib
exprint.lib

4.2 TMCROS.exe — time-signal viewer
- Folder:
src\viewers\Tmcrtout - Project (open this file):
TMCROS.vcxproj - Result:
dist\win32\bin\TMCROS.exe - Linking: sfile95.lib, complex.lib, exprint.lib
4.3 TMCGROUT.exe — scattering-matrix viewer
- Folder:
src\viewers\Tmcgrout - Project (open this file):
TMCGROUT.vcxproj - Result:
dist\win32\bin\TMCGROUT.exe - Linking: sfile95.lib, complex.lib, exprint.lib
4.4 TMC_DN.exe — radiation-pattern viewer
- Folder:
src\viewers\DiaNapGr - Project (open this file):
TMC_DN.vcxproj - Result:
dist\win32\bin\TMC_DN.exe - Linking: sfile95.lib, complex.lib, exprint.lib
This viewer uses the computation modules
c2DArrayandcIzlfrom the neighboring foldersrc\viewers\DiaNapr. They are compiled together with the project (a shared precompiled header). No additional action is required.
4.5 Verifying Phase 2
Open <ROOT>\dist\win32\bin. Three files must be present:
TMCROS.exe
TMCGROUT.exe
TMC_DN.exe
Run each one — the program window must open without the "Encountered an improper
argument" error. To test opening a file, use the test data from samples\SAMPLE_R (for
example, horns.soc).
If everything is fine, proceed to 05-build-kernels.md (Phase 3 — kernels).