vc自定义资源 嵌入dll怎么实现?

luoxqdc 2005-12-01 05:53:41
我有个DLL现在想嵌入EXE中怎么做?谢谢!最好有例子哈!
...全文
399 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
luoxqdc 2005-12-05
  • 打赏
  • 举报
回复
TO:wangk(倒之)
把DLL当作自定义资源放到工程里。把资源段Section改成可执行。然后取资源位置。
把它传给GetProcAddress查找相应函数即可。?
怎么取到资源位置??GetProcAddress不是要传入一个dll的句柄吗?
luoxqdc 2005-12-05
  • 打赏
  • 举报
回复
我按 codewarrior(会思考的草)做了创建了文件再load进来,不过别人说最好不要创建文件,所以能不能不创建文件,不能直接用吗?
//获取资源的大小
DWORD dwSize = SizeofResource(NULL, hRsrc);
if (0 == dwSize)
return FALSE;
//加载资源
HGLOBAL hGlobal = LoadResource(NULL, hRsrc);
if (NULL == hGlobal)
return FALSE;
//锁定资源
LPVOID pBuffer = LockResource(hGlobal);
if (NULL == pBuffer)
return FALSE;
Kudeet 2005-12-05
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/4406/4406442.xml?temp=.4478723
wangk 2005-12-05
  • 打赏
  • 举报
回复
GetProcAddress要传入的看起来是是dll的句柄,实际上需要的是Dll被加载到的内存初始位置。
另外,这样使用的Dll不能自动检查依赖,需要你自己手工保证你的Dll所依赖的Dll都已经成功加载(注意,依赖的Dll不能用资源这种方式加载,否则一定会出问题)
薛定谔之死猫 2005-12-01
  • 打赏
  • 举报
回复
既然作为DLL,就要以独立的镜像存在,顶多如 codewarrior(会思考的草)所说在运行时创建文件
cenchure 2005-12-01
  • 打赏
  • 举报
回复
楼主的意思大概是将DLL 注入到进程中,核心编程 一书可以看看
wangk 2005-12-01
  • 打赏
  • 举报
回复
把DLL当作自定义资源放到工程里。把资源段Section改成可执行。然后取资源位置。
把它传给GetProcAddress查找相应函数即可。
会思考的草 2005-12-01
  • 打赏
  • 举报
回复
哦,我理解错了,我以为你要把文件打包到exe里。
你的目的可以通过静态链接达到。前提是你要有lib文件。
luoxqdc 2005-12-01
  • 打赏
  • 举报
回复
就是要把DLL放到EXE里面,相当于把一个DLL和一个EXE合并成一个EXE
thisisll 2005-12-01
  • 打赏
  • 举报
回复
typedef BYTE* (* _CreateBmp)(int nWidth,int nHeight,BYTE* pBmpFile);
HINSTANCE hinst=NULL;
hinst=LoadLibrary("MyBmpDll.dll");
if(hinst)
{
_CreateBmp CreateBmp;
CreateBmp = (_CreateBmp)GetProcAddress(hinst,"CreateBmp");
pBmpFile = CreateBmp(nWidth,nHeight,pBmpFile);
FreeLibrary(hinst);
isnew=true;
}
else
{
AfxMessageBox("can't find dll");
}
thisisll 2005-12-01
  • 打赏
  • 举报
回复
我理解成你要把DLL放到EXE文件里

动态连接库有两种方法调用
动态调用和静态调用

静态的在VC里的SETTING里设置好
动态的就用2楼的loadlibrary
luoxqdc 2005-12-01
  • 打赏
  • 举报
回复
哦,还要写到硬盘上阿,可不可以不用写到盘上LoadLibrary了?有没有例子?
luoxqdc 2005-12-01
  • 打赏
  • 举报
回复
可以把,自定义资源好像可以把dll嵌入EXE中在调用,
会思考的草 2005-12-01
  • 打赏
  • 举报
回复
先把dll编译好,然后在exe的工程中把dll当做二进制资源插入进来即可。用的时候先把资源释放到磁盘上成为文件,然后再LoadLibrary。
thisisll 2005-12-01
  • 打赏
  • 举报
回复
只能调用啊
不能嵌

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧