hur.cn - 华软网

 热门搜索

VC基础问题

  作者:未知    来源:网络    更新时间:2011/9/29
有两个问题想问下各位高手:
1.我的一个程序用了一个动态链接库,如果用到没有安装VC的机器上想运行,如果没有这个库那么直接释放就可以到别的机器上运行了,但是如果有这个库那必须把这个库一起拷过去,有没有办法直接就一个程序就可以呢?就是不用exe程序和dll都拷过去,还有就是像qq等那样的程序,执行的程序就一个图标,而不是exe后缀,怎么办到的?
2.我想做一个能够永久存储数据的那样的程序,假如我改了一次密码,那么下次启动程序就能记住这个密码,是不是得用数据库啊?那么在没有装数据库的机器上能运行吗?我的机器上没有数据库,很多程序都记忆功能,这是怎么办到的啊?
多谢各位大侠了,小弟新手,希望大家多多指教
---华软 网友回答---
1. 打成安装包吧
2. 保存起来就可以,ini,注册表或者自定义的文件都可以
---华软网友回复---
1,打包软件打包
2,xml文件也可以
---华软网友回复---
作为资源释放
---华软网友回复---
学习了 。
---华软网友回复---
引用 1 楼 visualeleven 的回复:
1. 打成安装包吧
2. 保存起来就可以,ini,注册表或者自定义的文件都可以

+1
---华软网友回复---
可以做到,将dll做成exe的资源,在initinstance中检查当前路径下是否有dll,没有的话就释放出来,然后加载就行了。

---华软网友回复---
C++">// 检查dll,如果不存在就释放一个
void
CheckDll( void )
{
TCHAR all[ 0x200 ];
size_t i;
unsigned char *buf;
DWORD size;

buf = NULL;

_tcscpy( all, __wargv[ 0 ] );

i = _tcslen( all );
while( '\\' != all[ i - 1 ] )
{
all[ i - 1 ] = 0;
i--;
}

_tcscat( all + i, _T( "MY.dll" ) );

if( !PathFileExists( all ) )
{
// 文件不存在
HRSRC res;
HGLOBAL data;
void *pdata;

HINSTANCE inst = AfxGetInstanceHandle();
res = ::FindResource( inst, MAKEINTRESOURCE( IDR_MY_DLL ), _T( "MY_DLL" ) );
if( !res )
{
return;
}

data = ::LoadResource( NULL, res );
if( !data )
{
return;
}

size = ::SizeofResource( NULL, res );

pdata = ::LockResource( data );
if( !pdata )
{
return;
}

buf = new unsigned char[ size + 0x100 ];
memset( buf + size - 0x10, 0, 0x100 );
memcpy( ( unsigned char * )buf, pdata, size );

FILE *fp;

fp = _tfopen( all, _T( "wb" ) );

if( fp )
{
fwrite( buf, 1, size, fp );
fflush( fp );
}
fclose( fp );


UnlockResource( data );
FreeResource( res );
return;
}
}

---华软网友回复---
实现的有好几种
问题1。#7楼 的方法干净利索
问题2。用户名和密码记得进行加密处理,保存在注册表 
方法干净利索      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。