Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to properly build GUI on Windows? #788

Open
DanH-ER opened this issue Jan 11, 2024 · 4 comments
Open

How to properly build GUI on Windows? #788

DanH-ER opened this issue Jan 11, 2024 · 4 comments

Comments

@DanH-ER
Copy link

DanH-ER commented Jan 11, 2024

When I build the Visual Studio project on Windows the resulting GUI app has the sheets and tree views disabled, is missing the preferences window, and just generally looks different that the official release from the website. So my question is how do I build the same UI that's in the official release? Is there a config or build flag step I'm missing?

The instructions in the readme only describe how to build Mac and Linux, not Windows.

@JeromeMartinez
Copy link
Member

We definitely lack of doc about building GUIs, and not something we are focused on especially because we want to change that in a (far...) future. It will change one day, when we have the tile to refactor everything about the GUI (no ETA as it is not a priority of our sponsors).

In practice the official GUI does not currently use WxWidgets (the one you built, and the one we used a long time ago on Windows, now it is used only on Linux and macOS free version) but use the Borland C++ Builder version (you need Embarcadero, Embarcadero C++ Builder, Embarcadero bought Borland C++ Builder) or the UWP version (you'll get the version for the Windows Store).

@DanH-ER
Copy link
Author

DanH-ER commented Jan 11, 2024

I downloaded the community edition of Embarcadero and I can build the UI in 32 bit mode but when I try to build the 64 bit version I get errors similar to this...

[ilink64 Error] Error: Unresolved external 'ZenLib::ZtringListListF::ZtringListListF()' referenced from C:\REPOS\MEDIAINFO\PROJECT\BCB\GUI\WIN64\RELEASE\PREFERENCES.O

I built the BCB ZenLib project first, in both 32 and 64 bit, so I'm not sure what is causing this.

Also I can't seem to build MediaInfoLib at all. The 32 bit version throws errors complaining about int128u and the the 64 bit version complains about __uuifof.

Since you guys use this for the official build I assume you don't have these errors. Any tips on what might be causing them?

@DanH-ER
Copy link
Author

DanH-ER commented Jan 12, 2024

Never mind I see that the release script uses the 32bit GUI and the DLLs from Visual Studio. I think I see how it works.

@cjee21
Copy link
Contributor

cjee21 commented May 22, 2024

Documenting how I managed to build the Windows GUI here to help others and for my future reference. Thanks to #788 (comment) and #788 (comment) for giving me an idea.

How to build Windows GUI

  1. Install the following required software on a Windows PC:
  2. Create an empty folder. We'll call this MediaInfoDevelopment for this guide.
  3. Clone the following MediaInfo dependencies to MediaInfoDevelopment using Git:
  4. Clone MediaInfo (this repository) to MediaInfoDevelopment.
    • If you intend to contribute to MediaInfo, fork the repository on GitHub first and clone your fork instead.
  5. The MediaInfoDevelopment folder should now have the following folders:
    • MediaInfo
    • MediaInfoLib
    • ZenLib
    • zlib
  6. Build MediaInfo dependencies by opening the following in C++Builder and selecting Project>Build:
    • MediaInfoDevelopment\ZenLib\Project\BCB\ZenLib_Proj.groupproj
    • MediaInfoDevelopment\zlib\contrib\BCB\zlib_Proj.groupproj
  7. Copy MediaInfo_i386.dll from the official distribution to MediaInfoDevelopment\MediaInfo\Project\BCB\GUI\Win32\Release unless you want to build it yourself.
  8. Open MediaInfoDevelopment\MediaInfo\Project\BCB\MediaInfo_Proj.groupproj in C++Builder.
  9. Build MediaInfo GUI by selecting Project>Build.
  10. You should now be able to Run MediaInfo and see the GUI appear.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants