阅读:1768回复:2
正确加载了dll,却找不到dll中的函数,是什么原因阿
我用SetupCopyOEMInf函数来完成自动安装。用vc做了一个简单的
程序,就是点击一个按钮,然后调用这个函数,可以实现自动 安装。考虑到installshield script不支持这个函数,所以通过 dll调用来实现。 以下是dll的头文件和源文件 #if !defined COPYFILE_H #define COPYFILE_H #include "setupapi.h" #if !defined WZDDLL_H #define WZDDLL_H #ifdef __cplusplus extern "C" { #else #endif /* __cplusplus */ #ifdef WZDDLL_BLD #define DLL __declspec(dllexport) #else #define DLL #endif DLL void MyCopyFile(boolean a); #ifdef __cplusplus } #endif #endif #endif 源文件: #include <windows.h> #include <stdlib.h> #include "copyfile.h" void DLL MyCopyFile(boolean a) { if (a) { SetupCopyOEMInf("G:\\DrvInstDir\\qcmdm2k.inf",NULL,SPOST_PATH,0,NULL,0,NULL,NULL); SetupCopyOEMInf("G:\\DrvInstDir\\qcser2k.inf",NULL,SPOST_PATH,0,NULL,0,NULL,NULL); } } 在installshield中通过如下调用: prototype NonDriverSigning(BOOL); prototype CopyInfFile.MyCopyFile(BOOL); nResult=UseDLL("D:\\CopyInfFile.dll"); if (nResult = 0) then MessageBox ("UseDLL successful \n\n.DLL file loaded.", INFORMATION); else MessageBox ("UseDLL failed.\n\nCouldn't load .DLL file.", INFORMATION); abort; endif; bDone=TRUE; MyCopyFile(bDone); if (UnUseDLL("D:\\CopyInfFile.dll") < 0) then MessageBox ("UnUseDLL failed.\n\nDLL still in memory.", SEVERE); else MessageBox ("UnUseDLL successful.\n\n.DLL file removed from memory.", INFORMATION); endif; 结果出现dll可以加载,但是却提示找不到dll函数:CopyInfFile.MyCopyFile。大虾知道是什么原因吗? |
|
沙发#
发布于:2005-02-01 16:16
用VC做个EXE 在INSTALLSHIELD 中LAUNCHAPP调用EXE即可,DLL好麻烦!
|
|
板凳#
发布于:2005-02-02 15:38
Dlg_SdStartCopy:
szTitle = ""; szMsg = ""; listStartCopy = ListCreate( STRINGLIST ); //The following is an example of how to add a string(svName) to a list(listStartCopy). //eg. ListAddString(listStartCopy,svName,AFTER); nResult = SdStartCopy( szTitle, szMsg, listStartCopy ); ListDestroy(listStartCopy); if (nResult = BACK) then if (!bCustom) then goto Dlg_SetupType; else goto Dlg_SdFeatureTree; endif; endif; // setup default status Enable(STATUSEX); return 0; end; 怎样才能防止弹出nResult = SdStartCopy( szTitle, szMsg, listStartCopy );而又能拷贝文件。我将这个注释掉以后,拷贝文件 就出现错误,怎样才能解决这个问题呢,因为弹出这个窗口对驱动安装来说没有一点用,而且界面也不好看,所以想把它去掉 |
|