我在程序中用下面的代码加载一个动态链接库:
HMODULE hModule;
if((hModule=::LoadLibrary("a"))==NULL)
{
MessageBox(NULL,"fail","test",MB_OK);
return;
}
add addr=(add)::GetProcAddress(hModule,"func");
if(!addr)
{
MessageBox(NULL,"fail","test",MB_OK);
return;
}
在我自己的机器上可以顺利加载动态链接库a.dll,于是我做了发布版,然后拿到其他机器上去测试,发现如果机器装了VC,运行正常;如果机器没装VC,则会弹出“fail”对话框,a.dll加载失败。我一筹莫展。
能帮忙解决一下吗?
谢谢!
HMODULE hModule;
if((hModule=::LoadLibrary("a"))==NULL)
{
MessageBox(NULL,"fail","test",MB_OK);
return;
}
add addr=(add)::GetProcAddress(hModule,"func");
if(!addr)
{
MessageBox(NULL,"fail","test",MB_OK);
return;
}
在我自己的机器上可以顺利加载动态链接库a.dll,于是我做了发布版,然后拿到其他机器上去测试,发现如果机器装了VC,运行正常;如果机器没装VC,则会弹出“fail”对话框,a.dll加载失败。我一筹莫展。
能帮忙解决一下吗?
谢谢!
解决方案 »
- mfc winio 模拟鼠标和键盘,重点是鼠标
- 请教:DLL返回CString,COM里调用DLL如何返回
- 文本框操作问题。(在线等!!)
- 在VC中如何获得数据库存储过程里的输出参数
- 各位高手:关于cedit编辑框mutiline风格,当拷入大概1M的文本时,发现不能输入文本了?
- 关于波形保存的问题
- 怎么做有颜色的光标资源。。和动画的*.ANI的光标。。?
- 谁知道网上哪有VC书看?谢了Q_Q
- VS2010 LoadMenu()ID显示NO define
- 请问老鸟:《深入浅出》与《技术内幕》哪个更适合于<*初学者*>?
- 在MFC中 我用Class CMyDlg:public CDialog 然后......
- 能否有办法在对话框中嵌入CONSOLE窗口?
http://www.vchelp.net/wyy/paper/z_debug_tip.asp
请问这句
add addr=(add)::GetProcAddress(hModule,"func");
中的 add addr 和(add)表示什么意思
addr表示定义一个add类型的函数指针
比如如下定义:
typedef int (*add)(int) ;
add addr ;
这时就定义了一个函数指针(addr),因为GetProcAddress()得到一个FARPROC类型的地址值,
所以要强制转换一下才行。
我已经找到原因了,
共缺少两个重要的动态链接库
MFC42D.dll和MSVCRTD.dll