Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1804
  • Last Modified:

Is it possible to embed a text file into Visual C++ static library

I'm usual Visual Studio 2005.

When compiling a Visual C++ executableI can embed a text file when compiling by setting the project properties as:
     Configuration properties -> General -> CLR Support->CLR Support enabled
     Link -> Input -> Embed managed Resource -> name of text file added

If I am generating a Visual C++ static library, can I also embed a text file in it when compiling?  If yes, how do I do it?  The properties for a static library project allows me to enable CLR support but I can't find any property such as "Embed Managed Resource" that allows me to include the text file name that I want to embed.
0
khrispy
Asked:
khrispy
1 Solution
 
GregdoCommented:
Yes, it is possible to embed a text file in an unmanaged DLL or EXE.  You do it as a resource.  Go to the resource view. Right click on your resource file and choose Add Resource..., Import..., select the file that you want to embed and hit Open, enter a name for the custom resource type (e.g. TEXT).  Hit OK.

You now have a text resource in your project.  If you check the code in the .RC file, you will see that the actual file is not stored in the RC file, just a link to the actual file.  At compile time, the actual file will be copied into the EXE or DLL that you build.

The code below shows how to read the text file from the program resources.  This code doesn't do any pointer checking, so you might want to add some in your own code.
const HINSTANCE hInst = AfxFindResourceHandle(MAKEINTRESOURCE(IDR_TEXT1), TEXT("TEXT"));
 
const HRSRC hResDll = FindResource(hInst, MAKEINTRESOURCE(IDR_TEXT1), TEXT("TEXT"));
 
// load
const HGLOBAL hSQL = LoadResource(hInst, hResDll);
 
// lock
LPCTSTR pszSQL = (LPCTSTR)LockResource(hSQL);
const DWORD dwResourceSize = SizeofResource(hInst, hResDll);
 
// You now have a pointer to the embeded TEXT file and it's length so you can copy it somewhere
 
//unlock
UnlockResource(hSQL);

Open in new window

0

Featured Post

Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now