C++ 关于EXE文件写入读取数据的有关问题

C++ 关于EXE文件写入读取数据的问题
我已经有了一个可以运行的程序,运行时需要一些DLL和数据文件图片等。现在我想把这些资源都整合做成一个单独的EXE,直接可以运行的那种。
现在思路是将资源写入到exe文件,然后运行时把资源读取到临时目录再运行,这样做可行么?可行的话,应该如何写入和读取呢?

这种方法不行的话,用什么方法比较好呢?

使用软件打包或者zip打包的方式不考虑。

------解决方案--------------------
何必那么麻烦, 直接打包到现有的那个 exe 里就好了呀.
运行的时候甚至可以不用释放到临时目录, 直接加载到内存里就行了.
------解决方案--------------------
当然可以,一般的思路就是将这些图片添加到EXE的资源,然后释放到临时目录,
你要调用的话有各种发放都可以, system , createProcess 等等,
至于要读取结果,方法有很多种, 
1,同样是利用临时文件形式, 将结果保存至文本文件, 然后新开一个线程进行读取操作。
2,利用“管道”,进行进程间通信,具体方法你可以参考我写的一篇文章《进程间通信(管道方法)》
------解决方案--------------------
关于dll打包
http://blog.sina.com.cn/s/blog_49d619a301009gi7.html
------解决方案--------------------
如何释放资源的方法google上一大堆,随便一个都可以用,
我给你贴一段管道进行读写的代码:
SECURITY_ATTRIBUTES sa = {0};
STARTUPINFO si = {0};
PROCESS_INFORMATION pi = {0}; 
char strShellPath[MAX_PATH] = {0};

m_hReadPipeHandle = NULL;
m_hWritePipeHandle = NULL;
m_hReadPipeShell = NULL;
m_hWritePipeShell = NULL;
sa.nLength = sizeof(sa);
sa.lpSecurityDescriptor = NULL; 
sa.bInheritHandle = TRUE;

//建立读写管道
if(!CreatePipe(&m_hReadPipeHandle, &m_hWritePipeShell, &sa, 0))
{
if(m_hReadPipeHandle != NULL) CloseHandle(m_hReadPipeHandle);
if(m_hWritePipeShell != NULL) CloseHandle(m_hWritePipeShell);
return;
}

if(!CreatePipe(&m_hReadPipeShell, &m_hWritePipeHandle, &sa, 0)) 
{
if(m_hWritePipeHandle != NULL) CloseHandle(m_hWritePipeHandle);
if(m_hReadPipeShell != NULL) CloseHandle(m_hReadPipeShell);
return;
}

memset((void *)&si, 0, sizeof(si));
memset((void *)&pi, 0, sizeof(pi));

GetStartupInfo(&si);
si.cb = sizeof(STARTUPINFO);
si.wShowWindow = SW_HIDE;
si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
si.hStdInput = m_hReadPipeShell;
si.hStdOutput = si.hStdError = m_hWritePipeShell; 

GetSystemDirectory(strShellPath, MAX_PATH);
strcat(strShellPath,"\\cmd.exe");

if (!CreateProcess(strShellPath, NULL, NULL, NULL, TRUE, 
NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi)) 
{
CloseHandle(m_hReadPipeHandle);
CloseHandle(m_hWritePipeHandle);
CloseHandle(m_hReadPipeShell);
CloseHandle(m_hWritePipeShell);
return;
}
m_hProcessHandle = pi.hProcess;
m_hThreadHandle = pi.hThread;



写的
WriteFile(m_hWritePipeHandle, lpBuffer, nSize, &ByteWrite, NULL);

读的
ReadFile(pThis->m_hReadPipeHandle, lpBuffer, TotalBytesAvail, &BytesRead, NULL);
------解决方案--------------------
探讨

没见过这样用的。dll不释放出来,程序还能加载吗

------解决方案--------------------
加支资源里就可以 ,运行时释放出来
------解决方案--------------------
1. dll是运行动态链接的,请改成静态链接。 你需要的所有dll都要有静态链接库(.lib)
2. 可以把数据放在在代码中。如果数据特别大大的话,你的app会变得非常大。
C/C++ code
 
   unsigned char firstJpg[] = {......};//把JPG文件中的数据放进来即可
buffer