在下在公司做的软件使用vc6平台进行开发,因为要使用到vs2008中的CImage类来保存图片,所以使用vs2008将CImage封装成一个CImage.dll,再由VC6的软件进行调用,调用代码如下:
HINSTANCE hInst;
typedef int (_stdcall *p_CImage)(HBITMAP, CString);//定义函数指针类型
p_CImage CImage;
hInst=LoadLibrary("CImage.dll");//动态加载Dll
if (hInst==NULL)
{
MessageBox("未找到CImage.dll");
return;
}
CImage=(p_CImage)GetProcAddress(hInst,"CImage");//获取Dll的导出函数
CImage(bitmap, fileName);
FreeLibrary(hInst);
这个软件在所有XP系统和大部分Win7 32位系统都能运行,在少数Win7 32位系统不能正常运行,提示为找不到dll,hinst返回值为NULL,GetLastError为14001,使用相对路径、绝对路径、LPCSTR、LPCWSTR加载dll均不能成功,而同样的方法在xp和本身就能用的win7系统下就可以使用。
看到网上有说关联的dll也要有,我使用depends查看,复制关联dll,将所有的红都变绿了,还是加载不上。
有大神遇到过这种情况吗?求指教!
------解决思路----------------------
sxstrace.exe