Tôi đã cuộn hệ thống của riêng mình cho dự án máy chủ web C++ về cơ bản đã lấy một loạt tệp (HTML, CSS, JS, PNG, v.v.) và tạo các tiêu đề C++ chứa dữ liệu được mã hóa là static const char*
. Sau đó, tôi #include
các tiêu đề mà tôi cần truy cập vào dữ liệu. Ứng dụng mã hóa các tệp 'tài nguyên' thực thi dưới dạng bước dựng sẵn. Bản thân ứng dụng mã hóa đã sử dụng boost::filesystem
để tạo tiêu đề tài nguyên, do đó, hoạt động trên Windows/* nix.
Một tập tin tài nguyên đặc trưng có thể trông như thế này:
namespace resource
{
// Generated from mainPage.htm
static const char* mainPage_[] =
{
"<html>...</html>"
};
}
Đối với nội dung nhị phân tôi mã hóa bằng cách sử dụng \x
ký hiệu. Tôi cũng đảm bảo xếp hàng dữ liệu để có thể đọc được trong trình chỉnh sửa.
Tôi đã có một số vấn đề mặc dù - trình biên dịch MS không cho phép một static const char*
lớn hơn 64Kb là một PITA. May mắn thay, chỉ có các tệp lớn hơn là các tệp JavaScript mà tôi có thể dễ dàng chia thành các đoạn nhỏ hơn - hình ảnh lớn sẽ là một vấn đề.
Tài nguyên có phải được nhúng trong tệp thi hành của bạn không? Nếu không thì một con đường khác có thể đang sử dụng SQLite để lưu trữ các tập tin - việc khởi động và chạy với cơ sở dữ liệu nhẹ này sẽ không phải là quá nhiều nỗ lực. – Rob
Tương tự: http://stackoverflow.com/questions/549031/how-do-you-include-images-as-resources-in-a-c-executable – Rob