---
name: "sh-elf-windmc"
section: "1"
platform: "linux"
package: "binutils-sh-elf"
version: "2.44+3+b1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/sh-elf-windmc"
---

# sh-elf-windmc(1)

generates Windows message resources

## NAME

windmc - generates Windows message resources

## SYNOPSIS

windmc \[options\] input-file

## DESCRIPTION

**windmc** reads message definitions from an input file (.mc) and translate them into a set of output files.  The output files may be of four kinds:

- "h"

  A C header file containing the message definitions.

- "rc"

  A resource file compilable by the **windres** tool.

- "bin"

  One or more binary files containing the resource data for a specific message language.

- "dbg"

  A C include file that maps message id's to their symbolic name.

The exact description of these different formats is available in documentation from Microsoft.

When **windmc** converts from the `"mc"` format to the `"bin"` format, `"rc"`, `"h"`, and optional `"dbg"` it is acting like the Windows Message Compiler.

## OPTIONS

- **-a**

  - **--ascii\_in**

  Specifies that the input file specified is ASCII. This is the default behaviour.

- **-A**

  - **--ascii\_out**

  Specifies that messages in the output `"bin"` files should be in ASCII format.

- **-b**

  - **--binprefix**

  Specifies that `"bin"` filenames should have to be prefixed by the basename of the source file.

- **-c**

  - **--customflag**

  Sets the customer bit in all message id's.

- **-C** *codepage*

  - **--codepage\_in** *codepage*

  Sets the default codepage to be used to convert input file to UTF16. The default is ocdepage 1252.

- **-d**

  - **--decimal\_values**

  Outputs the constants in the header file in decimal. Default is using hexadecimal output.

- **-e** *ext*

  - **--extension** *ext*

  The extension for the header file. The default is .h extension.

- **-F** *target*

  - **--target** *target*

  Specify the BFD format to use for a bin file as output.  This is a BFD target name; you can use the **--help** option to see a list of supported targets.  Normally **windmc** will use the default format, which is the first one listed by the **--help** option.

- **-h** *path*

  - **--headerdir** *path*

  The target directory of the generated header file. The default is the current directory.

- **-H**

  - **--help**

  Displays a list of command-line options and then exits.

- **-m** *characters*

  - **--maxlength** *characters*

  Instructs **windmc** to generate a warning if the length of any message exceeds the number specified.

- **-n**

  - **--nullterminate**

  Terminate message text in `"bin"` files by zero. By default they are terminated by CR/LF.

- **-o**

  - **--hresult\_use**

  Not yet implemented. Instructs `"windmc"` to generate an OLE2 header file, using HRESULT definitions. Status codes are used if the flag is not specified.

- **-O** *codepage*

  - **--codepage\_out** *codepage*

  Sets the default codepage to be used to output text files. The default is ocdepage 1252.

- **-r** *path*

  - **--rcdir** *path*

  The target directory for the generated `"rc"` script and the generated `"bin"` files that the resource compiler script includes. The default is the current directory.

- **-u**

  - **--unicode\_in**

  Specifies that the input file is UTF16.

- **-U**

  - **--unicode\_out**

  Specifies that messages in the output `"bin"` file should be in UTF16 format. This is the default behaviour.

- **-v**

  - **--verbose**

  Enable verbose mode.

- **-V**

  - **--version**

  Prints the version number for **windmc**.

- **-x** *path*

  - **--xdgb** *path*

  The path of the `"dbg"` C include file that maps message id's to the symbolic name. No such file is generated without specifying the switch.

- **@***file*

  Read command-line options from *file*.  The options read are inserted in place of the original @*file* option.  If *file* does not exist, or cannot be read, then the option will be treated literally, and not removed.

  Options in *file* are separated by whitespace.  A whitespace character may be included in an option by surrounding the entire option in either single or double quotes.  Any character (including a backslash) may be included by prefixing the character to be included with a backslash.  The *file* may itself contain additional @*file* options; any such options will be processed recursively.

## SEE ALSO

the Info entries for *binutils*.

## COPYRIGHT

Copyright (c) 1991-2025 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts.  A copy of the license is included in the section entitled "GNU Free Documentation License".
