Trong Windows, sử dụng gcc của mingw, 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 trình khám phá?Làm cách nào để thêm biểu tượng vào tệp thực thi được biên dịch mingw-gcc?
Trả lời
Trước tiên, bạn cần tạo biểu tượng. Sau đó, bạn cần tạo một tệp RC có số trông giống như sau:
id ICON "path/to/my.ico"
ID có thể có nhiều thứ. Nó không quan trọng trừ khi bạn muốn tham khảo nó trong mã của bạn. Sau đó chạy windres như sau:
windres my.rc -O coff -o my.res
Sau đó, bạn chỉ bao gồm my.res cùng với các tập tin đối tượng của bạn khi bạn liên kết, ví dụ .:
g++ -o my_app obj1.o obj2.o my.res
Và đó nên tất cả để có nó.
Và, mà không phải trả thêm, nếu bạn muốn bao gồm thông tin phiên bản trong ứng dụng của bạn, thêm bản mẫu sau để tập .rc
của bạn và sửa đổi một cách thích hợp:
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 ý, các langID dành cho tiếng Anh Anh (là địa phương gần nhất với Úc tôi có thể xác định.) Nếu bạn muốn "Tiếng Anh" của Hoa Kỳ, hãy thay đổi đường dây BLOCK
thành:
BLOCK "040904E4"
và dòng dịch để:
VALUE "Translation", 0x409, 1252
Xem VERSIONINFO resource cho để biết.
Trong tệp RC, nameID thậm chí không phải là tên, nó chỉ có thể là một số nguyên. Tên tệp chỉ được trích dẫn nếu có chứa khoảng trắng. Thay vào đó của:
windres my.rc -O coff -o my.res
Bạn có thể sử dụng:
windres my.rc my.o
Tôi không thể liên kết 'my.o' với MinGW's' g ++' sau 'windres my.rc my.o' (một số thông báo lỗi liên quan đến' WinMain'), nhưng 'windres my.rc -O coff -o Đường dẫn my.res' hoạt động tốt. –
Sẽ là tuyệt vời nếu ví dụ cho thấy vị trí chèn dòng ICON. – chacham15
Và ... thứ hai .. http://stackoverflow.com/questions/1411040/how-to-add-an-icon-to-an-application-built-with-eclipse-galileo-c-and-mingw –
bạn cũng có thể bao gồm nhiều "Bản dịch" (nó chỉ cho Windows biết rằng chương trình này được dịch) bằng cách chỉ chắp thêm WORD, WORD-pairs, ví dụ: 'VALUE" Translation ", 0x409, 1252, 0x809, 1252' sẽ cho phép cả Hoa Kỳ và Anh Anh theo http://msdn.microsoft.com/vi-us/library/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 "' – WorldSEnder