Task: Fix Windows link error: HistoryDialog missing ORES_QT_API export

Table of Contents

This page documents a task in the Migrate all entities onto the generic HistoryDialog story. It captures the goal, current status, acceptance, and any notes or results.

Goal

Fix the Windows CI build break reported right after PR #1567 merged: ores.qt.refdata.dll fails to link with LNK2019=/=LNK2001 unresolved externals for ores::qt::HistoryDialog's constructor, loadHistory(), signals, and staticMetaObject, referenced from CurrencyController.cpp. Root cause: HistoryDialog (task 7D8659AB) never got the ORES_QT_API dllexport/dllimport macro every other ores.qt.api class carries — invisible on Linux/macOS (default symbol visibility), fatal on MSVC's explicit export model.

Status

Field Value
State DONE
Parent story Migrate all entities onto the generic HistoryDialog
Now Nothing.
Waiting on Nothing.
Next Nothing.
Last touched 2026-07-14

Acceptance

  • HistoryDialog carries ORES_QT_API, matching every other exported class in ores.qt.api (e.g. HistoryDialogBase).
  • Windows CI (windows-msvc-debug-ninja) links ores.qt.refdata.dll successfully.
  • No behavioural change on Linux/macOS.

Plan

(Implementation strategy. Written when work starts; key decisions are distilled into the parent story's * Decisions at close, but the plan itself stays — it is the historical record of what we did.)

Notes

Test Scenarios

Manual QA scenarios (scaffolded via compass add test_scenario, run through the QA Validation Runner panel) that verify this task. Link new ones here as they're created; the scenario doc itself links back via its "Verifies task" field.

Scenario State Notes
     

PRs

PR Title
#1569 [qt] Fix Windows link error: HistoryDialog missing ORES_QT_API export

Review

Comment summary File Decision Notes
       

Result

One-line fix: added #include "ores.qt/export.hpp" and the ORES_QT_API macro to HistoryDialog's class declaration. Verified locally (linux-clang-debug-make, full build clean; ctest ores.diff=/=ores.refdata.api=/=ores.qt.headless=/=ores.qt.tests 4/4 passed); Windows link result to be confirmed by CI.

Emacs 29.3 (Org mode 9.6.15)