100分求 API编的exe程序加载资源,怎么能在别人的机器上运行 API编的exe程序加载资源,怎么能在别人的机器上运行?比如我用loadimage加载一个bmp,在本机上没问题,到别人的机子上,还要将bmp文件拷贝到exe文件夹里吗?越详细越好。谢谢啦。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果要Load外部的bmp文件,在运行环境中必须在指定的路径下存在这个文件,如果不指定路径直接用文件名,则文件必须存在于当前目录下。如果想做成只有一个exe文件就能正常运行,则需要把bmp文件作为资源添加到项目里面,使用资源ID来Load。 bmp文件当然得在目标机器上存在了,最好与EXE在同一文件夹下,然后可以先通过GetModuleFileName取得当前运行EXE的路径,然后再加载bmp文件。TCHAR szPath[MAX_PATH] = { 0 };GetModuleFileName(NULL, szPath, MAX_PATH);TCHAR *p = _tcsrchr(szPath, _T('\\'));if (p && ++p) *p = _T('\0'){ _tcscat(szPath, _T("test.bmp")); // LoadImage(NULL, szPath, ....)}但建议把bmp文件放在EXE的资源里,直接从资源里加载比较方便。 还是建议你把图片放到资源里面,直接用资源ID来加载图片,这样只拷exe文件即可。 确实如此,刚刚试了。但有个问题,资源在本目录下生成的exe才2M,而资源在别的目录下加载生成的exe多了20M,什么原因? 因为exe里面包括图片文件,并且是以不压缩的BMP格式放进去的。 我是用的loadimage这个函数,本目录就是bmp在工程里面,就是loadimage第二个参数参数用"*.bmp",不在本目录就是参数用"C:\\***\\*.bmp",所以不知为什么? 我是用的loadimage这个函数,本目录就是bmp在工程里面,就是loadimage第二个参数参数用"*.bmp",不在本目录就是参数用"C:\\***\\*.bmp",所以不知为什么?===============我实在看不明白楼主说的是什么,你到底将这个图片是当作资源加入了工程,还是以外部文件的形式来用的啊,LoadImage这个API两种方式都可以啊 对不起,我没表达清楚。我用的参数"C:\\***\\*.bmp",不知是不是以外部文件的形式来用?exe文件多了20M。 "C:\\***\\*.bmp“=============有这样用参数的吗?看起来像是文件名,不过又加了通配符,这样用行不行啊,你成功了没有 可以把资源附加到你得到exe里面去嘛, 在运行的时候释放出来仍然使用loadimage 路径就是当前目录了. 你的bmp文件是不是20MB左右?如果你把bmp文件作为资源添加到项目里面,其数据会生成到exe文件里面,exe文件就会增大。 bmp 只1M。 用资源加载生成exe是2M,用"C:\\***\\*.bmp“ 这种方式是20M。不知是不是我反复实验加载的缘故,aps也变成了20兆。明天再试试。 用"C:\\***\\*.bmp"这种方式不会导致exe文件增大,你检查一下项目中添加了哪些资源。 两种方法:1.安装你的软件时同时也把bmp文件安装到相应目录2.把bmp文件以资源的方式加载到exe文件中来,exe运行时先把bmp文件从资源中释放出来,然后loadimage就行了,至于如何加载到exe文件中,如何释放出来,你可以参考http://topic.csdn.net/u/20080717/08/47eb158b-e5f6-4862-b260-8378f87c1719.html 如何设置ListCtrl高亮(选中)时的颜色?我在Class Wizard中找不到NM_CUSTOMDRAW这个消息 vector运用例子 列表控件 每一行的一个字段最多能够插入多长的字节数?? 小弟工作(软件开发)近一年了,有许多困惑。。。希望得到指点 请问如何将两个CString连接起来 敢问char是读[tfa:]还是['karikt] 捕捉视频为图像 在位图上画的图像老是闪,求大虾帮忙看看 请问有这样的函数吗? 在VC中将数据存为word文件 改变控件颜色问题 求一步一步做MFC的界面的试验指导
TCHAR szPath[MAX_PATH] = { 0 };
GetModuleFileName(NULL, szPath, MAX_PATH);
TCHAR *p = _tcsrchr(szPath, _T('\\'));
if (p && ++p) *p = _T('\0')
{
_tcscat(szPath, _T("test.bmp"));
// LoadImage(NULL, szPath, ....)
}
但建议把bmp文件放在EXE的资源里,直接从资源里加载比较方便。
确实如此,刚刚试了。但有个问题,资源在本目录下生成的exe才2M,而资源在别的目录下加载生成的exe多了20M,什么原因?
因为exe里面包括图片文件,并且是以不压缩的BMP格式放进去的。
我是用的loadimage这个函数,本目录就是bmp在工程里面,就是loadimage第二个参数参数用"*.bmp",不在本目录就是参数用"C:\\***\\*.bmp",所以不知为什么?
===============
我实在看不明白楼主说的是什么,你到底将这个图片是当作资源加入了工程,还是以外部文件的形式来用的啊,LoadImage这个API两种方式都可以啊
对不起,我没表达清楚。我用的参数"C:\\***\\*.bmp",不知是不是以外部文件的形式来用?exe文件多了20M。
=============
有这样用参数的吗?看起来像是文件名,不过又加了通配符,这样用行不行啊,你成功了没有
仍然使用loadimage 路径就是当前目录了.
bmp 只1M。 用资源加载生成exe是2M,用"C:\\***\\*.bmp“ 这种方式是20M。不知是不是我反复实验加载的缘故,aps也变成了20兆。明天再试试。
1.安装你的软件时同时也把bmp文件安装到相应目录
2.把bmp文件以资源的方式加载到exe文件中来,exe运行时先把bmp文件从资源中释放出来,然后loadimage就行了,至于如何加载到exe文件中,如何释放出来,你可以参考http://topic.csdn.net/u/20080717/08/47eb158b-e5f6-4862-b260-8378f87c1719.html