2009-12-31 40 views
5

Tôi muốn nhúng một số tệp (tệp văn bản, đồ họa có thể) vào dự án C++/CLI - tốt nhất là tôi cũng có thể làm trong dự án C#. Tuy nhiên, điều này có thể là không thể, như tôi thấy trong bài đăng này: http://bytes.com/topic/net/answers/571530-loading-markup-xamlreader-load-resource-file#post2240705. Điều này đã được viết cách đây ba năm, vì vậy có lẽ bây giờ có một số cách để làm điều này (trong VS2k8)?Nhúng tài nguyên vào một dự án C++/CLI

Trả lời

11

Trong dự án C++/Cli, hãy chuyển đến “Thuộc tính…”, sau đó xem trong “Trình liên kết”, sau đó “Nhập”, bạn sẽ thấy danh sách tệp được nhúng trong “Tệp tài nguyên được quản lý nhúng”.

+5

Nếu bạn thêm một tập tin ở đây gọi test.dat, sau đó bạn có thể truy cập vào nó như thế này: Suối^stm = hội :: GetExecutingAssembly() -> GetManifestResourceStream ("test.dat"); – Tarydon

+1

Ngoài ra, hãy kiểm tra nullptr chỉ trong trường hợp. –

1

Đây là một tôn tạo comment Tarydon, cho thấy làm thế nào để tiết kiệm tài nguyên nhúng vào một tệp:

using namespace System::IO; 
... 
String^ tmpFilename = System::IO::Path::GetTempFileName(); 
try 
{ 
    Stream^ readStream = Assembly::GetExecutingAssembly()->GetManifestResourceStream("embedded_file_name.xyz"); 
    if(readStream != nullptr) 
    { 
     FileStream^ writeStream = gcnew FileStream(tmpFilename, FileMode::Create); 
     readStream->CopyTo(writeStream); 
     readStream->Close(); 
     writeStream->Close(); // Required to flush the buffer & have non-zero filesize 
    } 
} 
catch (...) 
{ 
    // Do something? 
} 
1

Đến thuộc tính tập tin, chung, Item Loại, chọn Biên soạn Managed Resource

Làm việc trong VS2013

Để truy cập tài nguyên trong chương trình:

Stream^ stream = Assembly::GetExecutingAssembly()->GetManifestResourceStream("file.txt"); 
Các vấn đề liên quan