Trong Windows, bằng cách sử dụng gcc của mingw, vẫn có cách nào để chỉ định rằng tệp exe đầu ra là lấy tệp biểu tượng, để tệp exe hiển thị với biểu tượng đó trong explorer?
Trong Windows, bằng cách sử dụng gcc của mingw, vẫn có cách nào để chỉ định rằng tệp exe đầu ra là lấy tệp biểu tượng, để tệp exe hiển thị với biểu tượng đó trong explorer?
Câu trả lời:
Bạn cần tạo biểu tượng trước. Sau đó, bạn cần tạo một tệp RC với nội dung bên dưới. Ở đây chúng tôi sẽ đặt tên cho nó là my.rc
.
id ICON "path/to/my.ico"
Những gì id
được đề cập trong lệnh trên có thể là bất cứ điều gì. Nó không quan trọng trừ khi bạn muốn tham chiếu đến nó trong mã của mình. Sau đó chạy windres như sau:
windres my.rc -O coff -o my.res
Sau đó, trong khi xây dựng tệp thực thi, cùng với các tệp đối tượng và tệp tài nguyên khác, hãy bao gồm my.res
những tệp mà chúng ta đã nhận được từ bước trên. ví dụ:
g++ -o my_app obj1.o obj2.o res1.res my.res
Và đó là tất cả những gì cần có.
Và, miễn phí, nếu bạn muốn bao gồm thông tin phiên bản trong ứng dụng của mình, hãy thêm bản soạn thảo sau vào một .rc
tệp mới và làm theo các bước đã đề cập ở trên.
1 VERSIONINFO
FILEVERSION 1,0,0,0
PRODUCTVERSION 1,0,0,0
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "080904E4"
BEGIN
VALUE "CompanyName", "My Company Name"
VALUE "FileDescription", "My excellent application"
VALUE "FileVersion", "1.0"
VALUE "InternalName", "my_app"
VALUE "LegalCopyright", "My Name"
VALUE "OriginalFilename", "my_app.exe"
VALUE "ProductName", "My App"
VALUE "ProductVersion", "1.0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x809, 1252
END
END
Lưu ý, langID dành cho tiếng Anh Anh (là bản địa hóa gần nhất với Úc mà tôi có thể xác định.) Nếu bạn muốn "tiếng Anh" của Mỹ, hãy thay đổi BLOCK
dòng thành:
BLOCK "040904E4"
và dòng dịch sang:
VALUE "Translation", 0x409, 1252
Xem tài nguyên VERSIONINFO để biết thông tin.
VALUE "Translation", 0x409, 1252, 0x809, 1252
sẽ bật cả tiếng Anh Mỹ và Anh theo msdn.microsoft.com/en-us/ thư viện / aa381058.aspx . Điều này cũng cho bạn biết rằng bạn có thể bao gồm nhiều hơn một 'BLOCK "lang04E4"'
IconsExtract
để có một biểu tượng được nhúng vào một biểu tượng exe
mà tôi cần.
Trong tệp RC, nameID thậm chí không cần phải là tên, nó có thể chỉ là một số nguyên. Tên tệp chỉ được trích dẫn nếu nó chứa khoảng trắng. Thay vì:
windres my.rc -O coff -o my.res
Bạn có thể dùng:
windres my.rc my.o
my.o
với MinGW's g++
after windres my.rc my.o
(một số WinMain
thông báo lỗi liên quan), nhưng windres my.rc -O coff -o my.res
đường dẫn hoạt động tốt.
.o
(= COFF tự động; tôi đặt tên như vậy my.res.o
cho rõ ràng) phù hợp với tôi. Trên thực tế .res
các tập tin như sản xuất bởi MSVC có một định dạng khác nhau, vì vậy nó có vẻ là lẻ / không tương thích sử dụng COFF trong.res
Hãy thử Resource Hacker. Tôi đã có thể biên dịch chéo dự án của mình trong Linux (WSL) và tạo một biểu tượng từ logo trên trang chủ. Chỉ cần một cách đơn giản để nhúng nó vào exe và chương trình này hoạt động tuyệt vời. Resource Hacker của Angus Johnson